【中学】寻找阿姆斯特朗数
生活随笔
收集整理的這篇文章主要介紹了
【中学】寻找阿姆斯特朗数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【中學】尋找阿姆斯特朗數
請編寫一個程序尋找一種特殊整數:一個 n 位的正整數等于其各位數字的n次方之和。
輸入:
正整數的位數n(n<=6)。
輸出:
所有此n位特殊數。每個數占一行。若不存在符合條件的特殊數,則輸出提示:“No output.”;若存在,則從小到大進行輸出。
樣例:
| 1 | 3? | 153? 370? 371? 407? | 0 |
| 2 | 2? | No output.? | 0 |
思路
通過循環平判斷每個范圍內的數字是否為阿姆斯特朗數
因為n<=6,所以無論n是多少都當做n=6處理就可以了,比如 12345 的第一位是12345/100000=0
代碼
#include <stdio.h> #include <math.h> int main() { int n,a,b,c,d,e,f,g,i,j=0; scanf("%d",&n); a=pow(10,n); for(i=pow(10,n-1);i<a;i++) { b=i/100000; c=(i%100000)/10000; d=(i%10000)/1000; e=(i%1000)/100; f=(i%100)/10; g=i%10; if((pow(b,n)+pow(c,n)+pow(d,n)+pow(e,n)+pow(f,n)+pow(g,n))==i&&i>=a/10) { printf("%d\n",i); j++; } } if(j==0) { printf("No output.\n"); } return 0; }課外思考
如果位數更多呢,比如n<=10?
可不可以用別的方法,不那么臃腫的方法?
事實上我們可以用兩個循環加一個存儲結果的變量all解決這個問題
同學們可以自己試試,如果想不出來可以參考n位正整數的個數
總結
以上是生活随笔為你收集整理的【中学】寻找阿姆斯特朗数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 北理乐学c语言基础答案晕,北理乐学C语言
- 下一篇: 北理乐学c语言数字菱形,打印数字菱形,急