一个C++题目

来源:百度知道 编辑:UC知道 时间:2024/05/24 02:57:57
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入2 个正整数m和n(1<=m,n<=1000),输出m 到n之间的所有满足各位数字的立方和等于它本身的数。
输出语句:printf("%d\n", i);
例:括号内是说明
输入:
2 (repeat=2)
100 400 (m=100, n=400)
1 100 (m=1, n=100)
输出:
153 (1*1*1+5*5*5+3*3*3=153)
370 (3*3*3+7*7*7=370)
371 (3*3*3+7*7*7+1*1*1=371)
1

#include "stdio.h"
int main( )
{
int ri,repeat;
int i, digit, m, n, number, sum;

scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d%d", &m, &n);
/*---------*/
}
}

/*
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入2 个正整数m和n(1<=m,n<=1000),输出m 到n之间的所有满足各位数字的立方和等于它本身的数。
输出语句:printf("%d\n", i);
例:括号内是说明
输入:
2 (repeat=2)
100 400 (m=100, n=400)
1 100 (m=1, n=100)
输出:
153 (1*1*1+5*5*5+3*3*3=153)
370 (3*3*3+7*7*7=370)
371 (3*3*3+7*7*7+1*1*1=371)
1
*/

/*格式可能不太好看,但我在C++运行可以*/
#include "stdio.h"
int main()
{
int ri,repeat;
int i, digit, m, n, number, sum;

scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++)
{
scanf("%d%d", &m, &n);
/*---------*/
i = m;
while(i <= n)
{
sum = 0;
digit = i;
while(digit>0)
{
sum+=(digit%10)*(digit%10)*(digit%10); /*求各位数字的立方和*/
digit/=10; /*整除10 逐渐向高位求解*/
}
if(sum == i) /*如果满足原数=其各位数字的立方和,则输出*/
printf("%d ",i);<