输入数据有多组,每组占一行,包括两个整数m和n(100 ≤ m ≤ n ≤ 999)。
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开; 如果给定的范围内不存在水仙花数,则输出no; 每个测试实例的输出占一行。
100 120 300 380
no 370 371
#include <stdio.h> #include <math.h> int main() { int m, n,temp; while(scanf("%d %d",&m,&n) != EOF) { if(m>n) { temp = m; m = n; n = temp; } int gg = 0; for(int i=m;i<=n;i++) { if(pow(i/100,3) + pow((i/10)%10,3) + pow(i%10,3) == i ) { printf("%d ",i); gg++; } } if(gg == 0) { printf("no"); } printf("\n"); } return 0; }
#include<stdio.h> int main() { int n,m,shui; while((scanf(" %d",&m)!=EOF)&&(scanf(" %d",&n)!=EOF)){ getchar(); int ge,shi,bai; for(int i=m;i>=m&&i<=n;i++){ ge=i%10; shi=i/10%10; bai=i/100; if(i==(ge*ge*ge+shi*shi*shi+bai*bai*bai)) printf("%d ",i); } if(!shui) printf("no"); printf("\n"); shui=0; } return 0; }
#include <stdio.h> #include <math.h> int fun_water ( int a ) { int x= a; int count = 0; while ( a !=0 ) { a = a / 10; count++; } int sum = 0; while ( x != 0 ) { int b = x % 10; x = x / 10; sum += pow(b,count); } return sum; } int main() { int m = 0, n =0; while((scanf("%d%d", &m, &n)) != EOF) { if( m > n ) { int tmp = m; m = n; n = tmp; } int flag = 0; int i = m; for ( i = m; i <= n; i++ ) { int j = fun_water ( i ); if ( i == j ) { flag++; printf("%d ", i); } } if ( flag == 0 ) { printf("no\n"); } else { printf("\n"); } } return 0; }
/*思路 :2024年5月20日23:29:52 两个整数 m n 用户输入 (并且有范围) 判断是否是水仙花数 首先要得出个位 十位 百位 个位 : 取模%10 十位 :取模%100 百位 :/100 使用 ge shi bai 来接收这几个数字 然后判断用户输入的范围之内有没有水仙花数 */ //错误代码 第一次思考 // # include <stdio.h> // int main () // { // int m ,n; // // if (m>=) { // // } // while(scanf("%d %d",&m,&n)!=EOF) // { // for(int i=100;i<=999;i++) // { // int ge = i%10; // int shi = i%100; // int bai = i/100; // int sum = ge*ge*ge+shi*shi*shi+bai*bai*bai; // if (sum==n||sum==m) // { // printf("%d",sum); // } // else // { // printf("no\n"); // } // } // } // return 0; // } //改进代码 // #include <stdio.h> // int main() { // int m, n; // while (scanf("%d %d", &m, &n) != EOF) { // // 初始化一个标志变量,用于检查是否找到了水仙花数 // int found = 0; // // 遍历从m到n的每一个数 // for (int i = m; i <= n; i++) { // int ge = i % 10; // 个位 // int shi = (i / 10) % 10; // 十位 // int bai = i / 100; // 百位 // // 计算各位数字的立方和 // int sum = ge * ge * ge + shi * shi * shi + bai * bai * bai; // // 判断是否是水仙花数 // if (sum == i) { // printf("%d ", i); // 输出水仙花数 // found = 1; // 设置标志变量 // } // } // // 如果没有找到水仙花数,则输出"no" // if (!found) // { // printf("no\n"); // } // // 每个测试用例后输出一个换行符 // } // return 0; // } # include <stdio.h> int main () { int m,n; while (scanf("%d %d",&m,&n)!=EOF) //多组输入 { int found = 0;//用于判断是否找到了水仙花数 for(int i = m;i<=n;i++)//遍历循环出m-n中所有的数字 { int ge = i % 10; int shi = (i/10)%10; int bai = i /100; int sum = ge*ge*ge+shi*shi*shi+bai*bai*bai;//存放在sum里面 if(sum==i) { printf("%d ",i); found=1; } } /*如果 found 为 1(真),表示找到了;如果 found 为 0(假),表示没有找到。 当我们使用 !found 时,其含义如下: 如果 found 是 1(真),!found 将变为 0(假)。 如果 found 是 0(假),!found 将变为 1(真)。*/ if (!found) { printf("no\n"); } } return 0; }
#include <stdio.h> int main() { int m, n; m = n = 0; int flag = 0; //判断是否有水花仙数 while (scanf("%3d %3d", &m, &n) != EOF) //输入的范围 { int i = 0; for (i= m; i <= n; i++) //生成m到n的数 //157/10%10 =15%10 =5 { if ((int)pow(i % 10, 3) + //求个位 (int)pow(i / 10 % 10, 3) + //求十位 (int)pow(i /100, 3) == i) //是水花仙数的判断条件 { printf("%d ", i); flag = flag + 1; } } if (flag == 0) //没有水花仙数 printf("no\n"); } return 0; }
#include <math.h> #include <stdio.h> int main() { int m, n, a, b, c; int t = 0; while (scanf("%d %d", &m, &n) != EOF) { for (int i = m; i <= n; i++) { a = i / 100; b = i / 10 % 10; c = i % 10; if (pow(a, 3) + pow(b, 3) + pow(c, 3) == i) { printf("%d ", i); t++; } } if (t == 0) { printf("no\n"); } } return 0; }
#include <stdio.h> int main() { int m,n=0; int a,b,c=0; while (scanf("%d %d", &m, &n) != EOF) { int flag=0; for(int i=m;i<=n;i++){ a=i/100; b=i%100/10; c=i%10; if(i==(a*a*a+b*b*b+c*c*c)){ printf("%d ",i); flag++; } } if(flag==0){ printf("no\n"); } else{ printf("\n"); } } return 0; }
#include <stdio.h> int main() { int m = 0, n = 0, a = 0, b = 0,c = 0, i = 0, j = 0; while (scanf("%d %d", &m, &n) != EOF) { for(i = m; i < n+1; i++) { a = i % 10; //个位 b = i % 100 / 10; //十位 c = i % 1000 / 100; //百位 if (i == a * a * a + b * b * b + c * c * c ) { printf("%d ", i); j++; } } if(j == 0) { printf("no"); } } return 0; }
#include <stdio.h> int main() { int m,n,a,b,c,sum; while(scanf("%d %d",&m,&n)) { int i; int flag = 1; for(i=m;i<=n;i++) { int j = i; a = j%10; b = (j/10)%10; c = (j/100); sum = a*a*a+b*b*b+c*c*c; if(sum == i) { printf("%d ",i); flag = 0; } } if(flag == 0) { printf("\n"); } if(flag) { printf("no\n"); } return 0; } }
#include <stdio.h> #include <math.h> int main() { int m = 0; int n = 0; while (scanf("%d %d", &m, &n) != EOF) { int mid = 0; int count = 0; for(mid = m; mid <= n; mid++) { if(mid == pow(mid / 100,3) + pow(mid % 100 / 10,3) + pow(mid % 10,3) ) { printf("%d ",mid); count++; } } if(0==count) { printf("no\n"); } } return 0; }
#include <stdio.h> int main() { int m = 0, n = 0; int ge = 0, shi = 0, bai = 0, flag = 0; int i = 0; while (scanf("%d %d\n", &m, &n) != EOF) { for(i = m; i <= n; i++) { ge = i % 10; shi = i / 10 % 10; bai = i / 100; if( i == ge * ge * ge + shi * shi * shi + bai * bai * bai) { printf("%d ",i); flag = 1; } } if(flag == 0) printf("no\n"); } return 0; }
#include <stdio.h> int main() { int m, n,count=0; //题目要求输出结果是具体的水仙花数字,并且没有时要输出no,故定义count用来防备范围内无数字的情况 while(~scanf("%d %d",&m,&n)){//输入输出均为变量,须双循环套娃操作,这俩配合作战效果奇佳 for(m;m<=n;m++){//未引入数学函数,懒得声明,所以if这里又臭又长。意思是分别取三位数的位数进行计算 if(((m/10%10)*(m/10%10)*(m/10%10))+((m%10)*(m%10)*(m%10))+((m/100)*(m/100)*(m/100))==m) { printf("%d ",m);//小心这里,因为水仙花数可能不止一个,%d后面要空格哦 count++;//当count始终为0时,出循环后即可输出no } } if(!count){// !count相当于count==0 printf("no"); printf("\n"); } } return 0; }