题目:自然数有一类被称为自守数,意思就是自己和自己想成以后得到的数,尾数不变,例如:25*25=625,76*76=5776。请编写程序,用户输入M,N(10《=M<N<200000),求得M,N之间的所有自守数并输出,每五个一行。
#include <stdio.h>
void search(int a, int b)
{
if (a<10 || b>200000) {
printf("输出超限!\n");
return;
}
int t, s, i=0;
while (a<=b) {
t=a, s=t*t;
while (t>0 && t%10 == s%10) {
t/=10;
s/=10;
}
if (t==0) {
printf("%d ", a);
if (i==5) {
i=0;
printf("\n");
}
i++;
}
a++;
}
printf("\n");
}
int main()
{
int a, b;
while (scanf("%d%d", &a, &b) != EOF) {
if (a<=b) {
search(a, b);
}else{
search(b, a);
}
}
return 0;
}