MT1169 平衡数
(1)题目
输入一个正整数,它有N位数,N是大于1的奇数,判断它是不是平衡数。如果左侧的所有数字和等于右侧的所有数字之和,则称为平衡数。不考虑不合理的输入等特殊情况。
格式
输入格式: 输入正整数N 输出格式: 输出YES或者NO
样例1
输入格式: 1234006 输出格式: YES
(2)参考代码
#include<stdio.h> int main() { int N; scanf("%d", &N); int temp = N, count = 0, sum1 = 0, sum2 = 0; while (temp) { temp /= 10; count++; } if (count == 1) { printf("YES"); } else { for (int i=1;i<=count;i++) { if (i < (count - 1) / 2 + 1) { sum1 += N % 10; } else if (i > (count - 1) / 2 + 1) { sum2 += N % 10; } N /= 10; } } if (sum1 == sum2) { printf("YES"); } else { printf("NO"); } return 0; }
MT1170 四叶玫瑰数
(1)题目
输入正整数N,判断它是不是一个四叶玫瑰数,输出YES或者NO。四位玫瑰数是4位数的自幂数,它的每个位上的数字的4次幂之和等于它本身。
格式
输入格式: 输入正整数N 输出格式: 输出YES或者NO
样例1
输入: 1634 输出: YES
(2)参考代码
#include<stdio.h> #include<math.h> int main() { int N, sum = 0; scanf("%d", &N); int temp = N; while (temp) { sum += pow((double)(temp % 10), 4.0); temp /= 10; } if (N == sum && (N >= 1000 && N <= 9999)) { printf("YES"); } else { printf("NO"); } return 0; }
MT1171 幻数
(1)题目
一个数字,把他的各位数累加会得到一个新的数字,再把这个新数字的每一位加起来,重复这个过程,直到只剩下一位数字,如果最后剩下的数字是1,就称原数为一个幻数。输入正整数N,检查它是否是一个幻数,输出YES或者NO。
格式
输入格式: 输入正整数N 输出格式: 输出YES或者NO
样例1
输入: 1234 输出: YES
(2)参考代码
#include<stdio.h> int LeiJia(int num) { int sum = 0; while (num) { sum += num % 10; num /= 10; } return sum; } int main() { int N; scanf("%d", &N); while (N >= 10) { N = LeiJia(N); } if (N == 1) { printf("YES"); } else { printf("NO"); } return 0; }
MT1172 完美数字
(1)题目
输入正整数N,检查它是否完美输出YES或者NO。把一个数字的每一位拆分开,计算他们的阶乘再累加,如果和等于原数字,则该数字是完美的。
格式
输入格式: 输入正整数N 输出格式: 输出YES或者NO
样例1
输入: 145 输出: YES
(2)参考代码
#include<stdio.h> int main() { int N, i; scanf("%d", &N); int num, sum = 0, temp = N; while (temp) { num = 1; for (i=1;i<=temp%10;i++) { num *= i; } sum += num; temp /= 10; } if (sum == N) { printf("YES"); } else { printf("NO"); } return 0; }
MT1173 魔数
(1)题目
一个数字,把他乘以二,会得到一个新的数字,如果这个新数字依然由原数中那些数字组成,就称原数为一个魔数。输入正整数N,检查它是否是一个魔数,输出YES或者NO。
格式
输入格式: 输入正整数N 输出格式: 输出YES或者NO
样例1
输入: 142857 输出: YES
(2)参考代码
#include<stdio.h> int main() { int N; scanf("%d", &N); int temp1, temp2 = N / 2, flag; while (temp2) { temp1 = N; flag = 0; while (temp1) { if (temp1 % 10 == temp2 % 10) { flag = 1; } temp1 /= 10; } if (flag != 1) { printf("NO"); return 0; } temp2 /= 10; } printf("YES"); return 0; }
MT1174 A的B次方
(1)题目
输入正整数N,判断它是否可以表示为A的B次方,其中B>1,A>0,都是整数。输出YES或者NO。
格式
输入格式: 输入正整数N 输出格式: 输出YES或者NO
样例1
输入: 6 输出: NO
(2)参考代码
#include<stdio.h> #include<math.h> int main() { int N, i, j; scanf("%d", &N); for (i = 1; i <= sqrt(N) + 1; i++) { for (j = 2; j <= sqrt(N) + 1; j++) { if (pow(i, j) == N) { printf("YES"); return 0; } } } printf("NO"); return 0; }