【中学】寻找阿姆斯特朗数
生活随笔
收集整理的這篇文章主要介紹了
【中学】寻找阿姆斯特朗数
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
【中學(xué)】尋找阿姆斯特朗數(shù)
請編寫一個(gè)程序?qū)ふ乙环N特殊整數(shù):一個(gè) n 位的正整數(shù)等于其各位數(shù)字的n次方之和。
輸入:
正整數(shù)的位數(shù)n(n<=6)。
輸出:
所有此n位特殊數(shù)。每個(gè)數(shù)占一行。若不存在符合條件的特殊數(shù),則輸出提示:“No output.”;若存在,則從小到大進(jìn)行輸出。
樣例:
| 1 | 3? | 153? 370? 371? 407? | 0 |
| 2 | 2? | No output.? | 0 |
思路
通過循環(huán)平判斷每個(gè)范圍內(nèi)的數(shù)字是否為阿姆斯特朗數(shù)
因?yàn)閚<=6,所以無論n是多少都當(dāng)做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; }課外思考
如果位數(shù)更多呢,比如n<=10?
可不可以用別的方法,不那么臃腫的方法?
事實(shí)上我們可以用兩個(gè)循環(huán)加一個(gè)存儲(chǔ)結(jié)果的變量all解決這個(gè)問題
同學(xué)們可以自己試試,如果想不出來可以參考n位正整數(shù)的個(gè)數(shù)
總結(jié)
以上是生活随笔為你收集整理的【中学】寻找阿姆斯特朗数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 北理乐学c语言基础答案晕,北理乐学C语言
- 下一篇: 北理乐学c语言数字菱形,打印数字菱形,急