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