2015年蓝桥杯C组第二题:立方尾不变

立方尾不变

有些数字的立方的末尾正好是该数字本身。
比如:1,4,5,6,9,24,25,….

请你计算一下,在10000以内的数字中(指该数字,并非它立方后的数值),符合这个特征的正整数一共有多少个。

请提交该整数,不要填写任何多余的内容。

我的想法:
①可以采用穷举法。
②由于10000内的正整数的立方是一个很大的数,所以要用long long类型来保存
③比如25的立方尾15626,这个数就满足题目爱要求。我们只需要取出15625的最后两位来与25比较,判断是否相等。

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

你可能感兴趣的:(考试,C语言,蓝桥杯,比赛)