[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; }
留言
張貼留言