来自小伙伴的一条算法实现题

这道题目来自小伙伴面试嵌入式工程师的一道题目,题目的要求:
在小于99999数里面寻找能开根号的数,并且数里面要有2个相同的数,如144,565这种数,不能把数转为字符串

实现的基本思路就是首先找出所有平方数,然后按照取余、求商的特点提取个数码。最近在学C++特地用了一下vector模板:

//
//  main.cpp
//  find_duplicated_square
//
//  Created by awu on 2018/4/28.
//  Copyright © 2018 GDUT. All rights reserved.
//

#include <iostream>
#include <vector>
using std::vector;

int main(int argc, const char * argv[])
{
    // insert code here...
    vector<int> x;
    vector<int> y;
    int one;
    int two;
    int three;

    int a=10;
    //std::cin >>num;

    while(a*a<=99999)
    {
        x.push_back(a*a);
        for(int j=0;j<9;j++)
            if(x[a-10]%10==j)
            {
                one=j;//存放最后一个数码
                x[a-10]=x[a-10]/10;
                if(x[a-10]%10==j)
                {
                    two=j;//存放第二个数码
                    x[a-10]=x[a-10]/10;
                    if(one==two)
                    {
                        y.push_back(a*a);
                        break;
                    }

                    if(x[a-10]%10==j)
                    {
                        three=j;//存放第三个数码
                        x[a-10]=x[a-10]/10;
                        if(one==three)
                        {
                            y.push_back(a*a);
                            break;
                        }
                        if(three==two)
                        {
                            y.push_back(a*a);
                            break;
                        }
                    }
                }
            }

        a++;
    }


    for(int i=0;i!=y.size();++i)
    {
        std::cout<<y[i]<<std::endl;
    }






    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_39258979/article/details/80118218