用c++编写程序。在小于99999的正整数中找符合下列条件的数,它既是完全平方数,又有两位数字相同。

来源:互联网 发布:js使用base64显示图片 编辑:程序博客网 时间:2024/06/05 20:31

一、题目解析

要找出的数显然需要满足三个条件:

1.数的范围是从1-99999.的整数。

2.数满足是完全平方数。

3.数中有两位数字相同。

二、编程思路:简化条件的限制,直接对一个数的平方做循环,并让平方数满足该范围。判断两位数字相同可以采用排序算法加去重来实现。具体实现代码如下: 

#include <iostream>#include <stdio.h>#include <vector>#include <algorithm>using namespace std;bool function(int n){    vector<int> vec;    int ntenthousand = n / 10000;    int nthousand = n % 10000 / 1000;    int nhun = n % 1000 / 100;    int nten = n % 100 / 10;    int nge = n % 10;    if (ntenthousand!=0)    {       vec.push_back(ntenthousand);       vec.push_back(nthousand);       vec.push_back(nhun);       vec.push_back(nten);       vec.push_back(nge);    }   else{          if (nthousand!=0)             {                 vec.push_back(nthousand);                 vec.push_back(nhun);                 vec.push_back(nten);                 vec.push_back(nge);             }          else             {                 if (nhun!=0)                    {                        vec.push_back(nhun);                        vec.push_back(nten);                        vec.push_back(nge);                    }                 else                     {                        if (nten!=0)                            {                                vec.push_back(nten);                                vec.push_back(nge);                            }                        else                            {                                return false;                            }                      }               }      }    sort(vec.begin(),vec.end());    int oldsize = vec.size();    vec.erase(unique(vec.begin(),vec.end()), vec.end());    int newsize = vec.size();    if(oldsize != newsize)          return true;    else         return false;}int main(){int n,j=0;for (int i = 0; i*i < 100000; ++i){n = i*i;if (function(n)){cout << n << " ";++j;   if (j%10==0)   {   cout << endl;   }}}cout << endl;return 0;}

样例输出:100 3969    11025 19600 31329 4752460516 76729 99225

                  121 4225    11236 19881 32400 48400 61009 77284 99856

                  144 4489    11449 20449 33124 4884162001 77841

                  225 4624    11664 21025 3348949284 62500 78400

                  400 4900    11881 21316 3385649729 63001 80089

                  441 5625    12100  ...



 
阅读全文
1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 锦鲤鱼尾巴烂了怎么办 泰迪身上长白毛怎么办 鱼身上有红斑了怎么办 新买锦鲤不吃食怎么办 鱼身上有红血丝怎么办 大腿内侧有红色条纹怎么办 腿上出现红血丝怎么办 孕妇有脚气,很痒怎么办 孕晚期脚气很痒怎么办 孕期有脚气很痒怎么办 激光后留下色沉怎么办 腋下很黑怎么办怎样才能变白 屁股上长一块癣怎么办 鼻两侧一热发红怎么办 脸上起皮发红痒怎么办 自癜风发红发痒怎么办 脸又干又痒怎么办 脸发红还有点痛怎么办 脸过敏了红痒怎么办 脸两边一片红痒怎么办 婴儿大腿内侧破皮怎么办 宝宝大腿根淹了怎么办 大腿一走路就疼怎么办 下面痒怎么办用什么洗 长藓怎么办用什么药膏 小腿长湿疹很痒怎么办 产后排不出大便怎么办 3岁宝宝大便不通怎么办 腿上干燥像鱼鳞怎么办 一岁脸上长癣怎么办 脖子长了一片癣怎么办 深圳摇到车牌后怎么办 发现车被套牌了怎么办 我车牌被套牌了怎么办 车子被别人套牌怎么办 车被别人套牌了怎么办 被套牌了有违章怎么办 车被套牌了怎么办报警 车牌被别人套了怎么办 被别人套牌了该怎么办 孕妇阴痒还肿了怎么办