Fighting!!! 发表于 2020-3-4 15:32:26

判断自守数

输入任意一个数,判断它是否为自守数。
如果一个自然数的平方数的尾部任然为该自然数本身,则称其为自守数。例如:
5 * 5 = 25
76 * 76 = 5776
625 * 625 = 390625

Snopy 发表于 2020-3-4 15:39:29

把整个程序的数值定义成字符型,输入一个数后获取长度,计算平方,用分片判断尾部是否是该数

qiuyouzhi 发表于 2020-3-4 15:49:25

def test(n):
    result = n * n
    n, result = str(n), str(result)
    if result == str(n):
      return True
    return False

print(test(5))

4goodworld 发表于 2020-3-4 16:39:40

自己写的代码,还是不够精炼,当然,你也得考虑到int的取值范围,超范围可能就不对了
#include "stdafx.h"
#include <string.h>
#include "math.h"
#include<iostream>
using namespace std;


int isnum(int num){
        int j,i,len1,len2,ret;
        j=num*num;
        char *str1,*str2;
        i=ret=0;
        str1=(char*)malloc(256*sizeof(char));
        str2=(char*)malloc(256*sizeof(char));
        itoa(num, str1, 10);
        itoa(j, str2, 10);
        len1=strlen(str1);
        len2=strlen(str2);
        printf("%2d %2d %2d %2s %2s\n",j,len1,len2,str1,str2);
        while((str1+len1-i) !=str1)
        {
                i++;
                printf("%c %c\n",*(str1+len1-i),*(str2+len2-i));
                if(*(str1+len1-i)!=*(str2+len2-i))
                {
                        ret=0;
                        break;
                }
               
               
                ret=1;
       }
       

        return ret;

}

void test(){

        int a;
        a=isnum(13);
        printf("%d",a);//1是 0不是

       
}



int main()
{
                test();
      system("pause");
        //getchar();
      return 0;
}

magicpower 发表于 2020-3-21 02:56:20

对任意一个整数进行求余,只要余数是1,5,6,那么就是自守数

magicpower 发表于 2020-3-21 02:56:57

任意一个数n
n%10即可

magicpower 发表于 2020-3-21 02:57:50

emm,0也算
页: [1]
查看完整版本: 判断自守数