看下也可以哦我要处理一个200000的平方的数,让它和自身比较看是不是自守数,自守数是指一个数的平方的尾数等于该数自身的

看下也可以哦
我要处理一个200000的平方的数,让它和自身比较看是不是自守数,自守数是指一个数的平方的尾数等于该数自身的自然数.如25*25=625是满足.能不能帮忙写一小段函数,只要能识别这数是不是自守数就可以了.
但由于 i 的取值范围[10,200000]比较大,所以( i * i )会溢出,请考虑溢出问题.
I不是rr 1年前 已收到1个回答 举报

muzimeiwen1 幼苗

共回答了13个问题采纳率:92.3% 举报

// 算法分析, a 如果是自守数,则 a*a - a 的后几位为0, 为0的个数取决于a的位数
// 我们使用取余的方法来判断后几位全为0
PS : 代码我没有经过测试,可能会有一些小错误,自己根据算法进行调试一下
int tmp = a;
int num = 1;
int num2 = 10;
while ( (tmp = tmp / 10) > 0) num++ ; // 判断a的位数
while (num > 1)
{
num2 = num2 * 10; // 根据a的位数,得到一个10的a次方数,如a=124, 则num2=1000
num--;
}
if( ((a * a - a) % num2) == 0)
{
pintf("a = %d 是自守数" , a);
}

1年前

10
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.033 s. - webmaster@yulucn.com