UVa 12895

来源:互联网 发布:淘宝图片水印怎么去掉 编辑:程序博客网 时间:2024/06/16 03:38

题目:判断一个数是否是Armstrong Number,设数字N有n位,则每个数位上的数字的n次方的和为N。

分析:数论。直接按照题意模拟即可。

说明:不需要考虑溢出。

#include <stdio.h> #include <stdlib.h>int armstrong_number(int N){int S1 = N, order = 0;while (S1) {order ++;S1 /= 10;}int S2 = N;int add, ans = 0; // 9^9 < 1e9while (S2) {add = 1;for (int i = 0; i < order; ++ i) {add *= S2%10;}ans += add;S2 /= 10;}return ans == N;}int main(){int T, N;while (~scanf("%d",&T)) while (T --) {scanf("%d",&N);if (!armstrong_number(N)) {puts("Not Armstrong");}else {puts("Armstrong");}}return 0;}


原创粉丝点击