A组第三题:
奇妙的数字
小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。
你能猜出这个数字是多少吗?
请填写该数字,不要填写任何多余的内容。
分析:
1.变量x2,表示数字平分,x3表示数字的礼服
2.定义一个数组test[10],10元素代表(0-9)10个数出现的次数,然后取出x2和x3的每一位,用数组的10个元素标识出各个数出现的次数,没出现一次加1,最后再判断数组test的10个元素是不是1.
如果为1,则说明满足题的要求,如果非1,则不满足题目的要求。
#include <stdio.h>
#include <math.h>
int main()
{
//定义的变量很多,有不同的作用
int i; //i是循环的数字1~10000
int bit;//是取余数,比如25,bit = 100,某个数%100就是取两位余数
int end;//比如5的立方是625,end = 625 % 10 = 5
int temp;
long long lng;
int count = 0;//计数
for(i = 1;i < 10000;i++)
{
bit = 1; //每次开始时保证把bit位置1
temp = i;
while(temp)//数字有几位,就取几位余数,比如5的立方是625,bit = 10。625 % 10 = 5
{
bit = bit * 10;
temp = temp / 10;
}
lng = (long long)pow(i,3);
end = lng % bit;
if(end == i) //判断后面几位,与它本身是否相等
{
printf("i = %d\n",i);
count++;
}
}
printf("count = %d\n",count);
}