解题思路:首先判断自然数和其平方数同时除10得到的余数是否相同,如果相同,循环将两个数除以10后判断余数是否相同(依次比较高位)。

注意事项:自然数的数据类型用long long。

参考代码:

#include

using namespace std;


int main()

{


         for(long long int i = 0; i <= 200000; i++)

         {

                 long long int num = i * i;     

                 int flag = 1, sumflag = 0;


                 if(i <= 10) // 前11个数比较好判断

                 {

                         if((num % 10) == i || i == num)

                         {

                                 if(i == 0)

                                 {

                                         cout << i;

                                 }

                                 else

                                 {

                                         cout << ' ' << ' ' << i;        //提交要的输出格式

                                 }

                         }

                                  continue;

                 }


                 long long int tempA = i,  tempB = num;


                 while(tempA / 10 != 0)     //由于自然数位数比其平方数位数少,所以用自然数除10作为循环条件,

                                                          //               但是存在问题:这个自然数的最高位需要和其平方数的对应位另外比较

                 {

                         if(tempA % 10 == tempB % 10)

                         {

                                 flag = 0;                    //数的对应位相同的标志

                                 sumflag += flag;     

                         }

                         else

                         {

                                 flag = 1;

                                 break;

                         }

                         tempA = tempA / 10;

                         tempB = tempB / 10;

                 }

                 if(sumflag == 0 && tempA % 10 == tempB % 10)

                 {

                          cout << ' ' << ' ' << i ;

                 }

         }

}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论