傳說中的水仙花數就是一個三位數的各個位數的三次方之和就是這個數本身例如153=1*1*1+5*5*5+3*3*3。
好,開始解題:首先,題中已經說了水仙花數是一個三位數,也就是說我們需要定義一個循環在100到1000中一個個來驗證它是不是水仙花數;
然后就是核心代碼了,憑空想的話很難找到思路,至少對我這個菜雞來說是這樣,那怎么辦呢?給題上的例子用起來啊,那問題又來了,怎么把153和等號右邊的玩意兒聯系起來。153,有1有5還有3,右邊也是有1有5還有3;取模運算符吧3%10=3 5%10=5 1%10=1,你就說對不對就完事兒了,這里的=是數學意義上的=啊,不是賦值符號,我不想挨懟。人家個位數的取模運算一次就完事,那十位數百位數上的咋搞,先除以十再搞!
為了小伙伴更容易理解,我在十位和百位的運算上加了括號,實際編寫中不加也可以
1 #include<stdio.h> 2 int main() 3 { 4 int ge,shi,bai;//定義個位、十位、百位 5 for(int i=100;i<1000;i++) 6 { 7 //個位數計算方法 8 ge=i%10; 9 //十位數計算方法 10 shi=(i/10)%10; 11 //百位數計算方法 12 bai=(i/10/10)%10; 13 14 //判斷是否為水仙花數 15 if(i==bai*bai*bai+shi*shi*shi+ge*ge*ge) 16 { 17 //輸出水仙花數 18 printf("水仙花數:%d\n",i); 19 } 20 21 } 22 23 24 return 0; 25 }
結果:
水仙花數:153
水仙花數:370
水仙花數:371
水仙花數:407