被题意硬控了,以为修改是指 增删改 三种操作。

#include <iostream>
using namespace std;

int main() {
    int t=1;
    cin>>t;
    int tot = 26+26+10+4;
    while(t--){
        string s;
        cin>>s;
        int n=s.size();
        int upper=0,lower=0,digit=0,special=0;
        for(int i=0;i<n;i++){
            if(isdigit(s[i]))digit++;
            if(isupper(s[i]))upper++;
            if(islower(s[i]))lower++;
            if(s[i]==','||s[i]=='.'||s[i]=='?'||s[i]=='!')special++;
        }
        int lack = 0+(upper<1)+(lower<1)+(digit<1)+(special<1);
        int ans=0;
        if(n>17||n<7||lack>=2){
            cout<<0<<"\n";
            continue;
        }else {
            if(n==17){
                    // if(lack>=1){
                    //     cout<<0<<"\n";
                    //     continue;
                    // }
                    // bool ok=false;
                    // if(upper>1)ans+=upper;
                    // if(lower>1)ans+=lower;
                    // if(digit>1)ans+=digit;
                    // if(special>1)ans+=special;
                    cout<<ans<<"\n";
            }else if(n==7){
                // if(lack==0){
                //     ans=tot;
                // }else {
                //     if(upper<1)ans=26;
                //     if(lower<1)ans=26;
                //     if(digit<1)ans=10;
                //     if(special<1)ans=4;
                // }
                cout<<ans*(8)<<"\n";
            }else {
                if(lack>0){
                    // int r=n-4+1+(n<16)*(n+1);
                    int r=n-4+1;
                    if(!lower)ans+=r*26;
                    if(!upper)ans+=r*26;
                    if(!digit)ans+=r*10;
                    if(!special)ans+=r*4;
                    cout<<ans<<"\n";
                }else {
                    // if(n<16){
                    //     ans+=(n+1)*tot;
                    // }
                    // if(n>8){
                    //     if(lower>1)ans+=lower;
                    //     if(upper>1)ans+=upper;
                    //     if(digit>1)ans+=digit;
                    //     if(special>1)ans+=special;
                    // }
                    if(lower>1)ans+=lower*(tot-1);
                    else ans+=26-1;
                    if(upper>1)ans+=upper*(tot-1);
                    else ans+=26-1;
                    if(digit>1)ans+=digit*(tot-1);
                    else ans+=10-1;
                    if(special>1)ans+=special*(tot-1);
                    else ans+=4-1;
                    // ans++;
                    cout<<ans<<"\n";
                }
            }
        }

    }   
}