今天才开始进ACM刷题,网站就挂掉了,哎……
/*!题目 描述 请判断一个数是不是水仙花数。 其中水仙花数定义各个位数立方和等于它本身的三位数。 输入 有多组测试数据,每组测试数据以包含一个整数n(100<=n<1000) 输入0表示程序输入结束。 输出 如果n是水仙花数就输出Yes 否则输出No 样例输入 153 154 0 样例输出 Yes No */ //! \brief 答案 #include"stdio.h" #include"stdlib.h" #include"math.h" void main() { int index = 0; int size = 10; int *arr = (int *)malloc(sizeof(int)*size); int num; while (scanf_s("%d", &num) && num != 0) { if (num<100 || num >= 1000) { continue; } if (index >= size) { arr = (int *)realloc(arr, sizeof(int)*(size+10)); size += 10; } arr[index++] = num; } for (int i = 0; i < index; i++) { int value = arr[i]; int bw = value / 100; int sw = (value - bw * 100) / 10; int gw = value - bw * 100 - sw * 10; if ((powf(bw, 3) + powf(sw, 3) + powf(gw, 3)) == value) { printf("Yes\n"); } else { printf("No\n"); } } free(arr); arr = NULL; }
时间: 2024-10-07 05:31:22