3 条题解
-
0
二进制枚举,注意开头不能为零
#include <iostream> #include <vector> #include <algorithm> #include <cmath> #include <map> #include <set> #include<stack> #include<queue> using namespace std; #define int long long const int MOD= 998244353; void solve() { string s;cin>>s; int n=s.length(); int mx=-1; for(int i=(1<<n)-1;i>0;i--){ int num=0,ans=0; for(int j=0;j<n;j++){ if((i>>(j))&1){ if(ans==0&&s[j]=='0'){ break; } ans++; num=num*10+s[j]-'0'; } } // 1881388645 int x=sqrt(num); if(x*x==num&&num>0){ mx=max(mx,ans); } } if(mx==-1){ cout<<-1<<endl; }else{ cout<<n-mx<<endl; } return; } signed main() { iostream::sync_with_stdio(false); cin.tie(0); cout.tie(0); solve(); // int t;cin>>t; // while(t--){ // solve(); // } return 0; }
信息
- ID
- 595
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 46
- 已通过
- 10
- 上传者