输入数据有多组,每组占一行,包括两个整数m和n(100 ≤ m ≤ n ≤ 999)。
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开; 如果给定的范围内不存在水仙花数,则输出no; 每个测试实例的输出占一行。
100 120 300 380
no 370 371
int is_shuixianhua(int i)
{
int sum=0; sum=pow(i%100%10,3)+pow(i/10%10,3)+pow(i/100,3); if(sum==i) return 1; else return 0;
}
int main() {
int m, n;
int count=0;
while (scanf("%d %d", &m, &n) != EOF) {
for(int i=m;in;i++)
{
if(is_shuixianhua(i))
{
printf("%d ",i);
count++;
}
}
if(count==0)
{
printf("no");
}
}
return 0;}
#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;
}