题目:求200000以内的自守数。\n\n要求编写函数selfhold,判断一个数是否是一个自守数,\n\n若是,则返回1,否则返回0。\n\n自守数是指一个数的平方的尾数等于该数自身的自然数。
把代码贴出来了,注释也写上了,帮助你更好的理解:
#include <stdio.h>
#include <math.h>
/* 判断一个数是否是一个自守数 */
int selfhold(int n) {
int m = n * n; // 计算该数的平方
int d = log10(m) - log10(n) + 1; // 计算该数的平方的尾数长度
int k = pow(10, d); // 计算10的d次方
int t = m % k; // 计算该数的平方的尾数
/* 返回结果 */
return t == n ? 1 : 0;
}
int main() {
int i;
for (i = 1; i <= 200000; i++) {
if (selfhold(i)) {
printf("%d\n", i);
}
}
return 0;
}
#include <stdio.h>
int selfhold(int x);
int main()
{
int n;
scanf("%d", &n);
printf("%d",selfhold(n));
return 0;
}
int selfhold(int x)
{
int a,b,c;
a=x%10;
b=x/10%10;
c=b*10+a;
if(c==x){
return 1;
}
else{
return 0;
}
}
供参考:
#include <stdio.h>
int selfhold(int x)
{
int n = x, k = 1;
n *= n;
while (k <= x) k *= 10;
n %= k;
return n == x;
}
int main()
{
int i;
for (i = 1; i <= 200000; i++) {
if (selfhold(i))
printf("%d\n", i);
}
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: