[Codeforces] Educational42 Make a Square

題目連結:http://codeforces.com/contest/962/problem/C
  用位元的手法亂做。


#include<bits/stdc++.h>
using namespace std;
int main()
{
    string a;
    cin >> a;
    reverse(a.begin(),a.end());
    int len = a.size();
    int ans = 1e9;
    for(int i = 1; i < (1<<len); i++)
    {
        int t= 0, o = 0, p = -1;
        vector<int> aa;
        aa.clear();
        for(int j = 0; j < len; j++)
        {
            if(i&(1<<j)) 
            {
                t += pow(10,o)*(a[j]-'0');
                o++;
                aa.push_back(j);
            }
        }
        if(a[aa.back()] == '0') continue; 
        int tt = sqrt(t);
        if(tt*tt == t)
        {
            //cout << i  << endl;
            ans = min(ans,len-o);
        }
    }
    if(ans == 1e9) cout << -1;
    else cout << ans << endl;
}

留言

這個網誌中的熱門文章

Shellshock.io從入門到上手(針對單狙)(沒有圖片、影片版本)

[TIOJ] 1007燈泡問題