-
题目描述:
-
设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321)
求N的值
-
输入:
-
程序无任何输入数据
-
输出:
-
输出题目要求的四位数,如果结果有多组,则每组结果之间以回车隔开
-
样例输入:
-
样例输出:
代码:
#include <stdio.h>
#include <math.h>
int main() {
int i,j;
for(i=1000;i<1200;i++) {
int n = i * 9;
if(n > 9999)
break;
int x,y;
bool equal = true;
int tmp = i;
for(j=0;j<4;j++) {
x = (int) n / pow(10,3-j);
y = tmp % 10;
if(x == y) {
float p = pow(10,3-j);
int fuck = (int) p;
n = n - fuck * x;
tmp /= 10;
}
else {
equal = false;
break;
}
}
if(equal == true)
printf("%d\n",i);
}
return 0;
}
很简单的一个题,不过没有注意double 与 Int 型的转换,导致出现错误。
函数pow(x,y) 返回的是double,而不是int。
int x = pow(10,2) x会变成了99。
还是先将pow的结果变为Int再赋值吧。