寻找200000以内的自守数

题目:求200000以内的自守数。\n\n要求编写函数selfhold,判断一个数是否是一个自守数,\n\n若是,则返回1,否则返回0。\n\n自守数是指一个数的平方的尾数等于该数自身的自然数。

img


自己写了一半 没思路了

把代码贴出来了,注释也写上了,帮助你更好的理解:

#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;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^