3 条题解

  • 0
    @ 2024-1-7 13:37:54

    二进制枚举,注意开头不能为零

    #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
    上传者