大lao们求助

B3843 [GESP202306 三级] 密码合规

Song_jiayu @ 2024-10-27 09:21:56

不输出提示 return value 3221226356 提交RE

#include<bits/stdc++.h>
using namespace std;
string s,t;
long long f;
int oc1,oc2,oc3,oc4;
/*1.大写开关 2.小写开关 3.数字开关 4.其他开关*/ 
int main(){
    cin>>s;
    for(int i=0;i<s.size();i++){
        if(s[i]!=','){
            t[i]=s[i];
        }else{
            f=oc1=oc2=oc3=oc4=0;
            for(int j=0;j<t.size();j++){
                if(t[j]>='A' and t[j]<='Z'){
                    oc1=1;
                }else if(t[j]>='a' and t[j]<='z'){
                    oc2=1;
                }else if(t[j]>='0' and t[j]<='9'){
                    oc3=1;
                }else if(t[j]=='!' or t[j]=='@' or t[j]=='#' or t[j]=='$'){
                    oc4++;
                }else{
                    f=1;
                    break;
                }
            }
            if(f==0 and oc1+oc2+oc3>=2 and oc4!=0){
                if(t.size()>=6 and t.size()<=12){
                    cout<<t<<"\n";
                }
            }
            t="";
        }
    }
    return 0;
}

by LLh_kun @ 2024-11-11 20:48:37

改了两处,都在注释里

#include<bits/stdc++.h>
using namespace std;
string s,t;
long long f;
int oc1,oc2,oc3,oc4;
int main(){
    cin>>s;
    for(int i=0;i<s.size();i++){
        if(s[i]!=','){
            t+=s[i];//这里是t+= s[i](等于把s[i]拼在t后面)
        }else{
            f=oc1=oc2=oc3=oc4=0;
            for(int j=0;j<t.size();j++){
                if(t[j]>='A' and t[j]<='Z'){
                    oc1=1;
                }else if(t[j]>='a' and t[j]<='z'){
                    oc2=1;
                }else if(t[j]>='0' and t[j]<='9'){
                    oc3=1;
                }else if(t[j]=='!' or t[j]=='@' or t[j]=='#' or t[j]=='$'){
                    oc4++;
                }else{
                    f=1;
                    break;
                }
            }
            if(f==0 and oc1+oc2+oc3>=2 and oc4!=0){
                if(t.size()>=6 and t.size()<=12){
                    cout<<t<<"\n";
                }
            }
            t="";
        }
    }
    //到这里了,我只能说:这数据太水了!!!
    //由于字符串最后是没有“,”的(那个输出答案的判断是假如这个字符是‘,’才会进入)
    //所以假设最后一个是合法的,那么他在结尾没有遇到“,”
    //以至于即使合法最后一个也不会进入那个判断输出 !! 
    //所以得在后面再加一个代码

    //(这个数据水到不加这段代码也不会错,但实际现实中一些数据是过不去的)
    f=oc1=oc2=oc3=oc4=0;
    for(int j=0;j<t.size();j++){
        if(t[j]>='A' and t[j]<='Z'){
            oc1=1;
        }else if(t[j]>='a' and t[j]<='z'){
            oc2=1;
        }else if(t[j]>='0' and t[j]<='9'){
            oc3=1;
        }else if(t[j]=='!' or t[j]=='@' or t[j]=='#' or t[j]=='$'){
            oc4++;
        }else{
            f=1;
            break;
        }
    }
    if(f==0 and oc1+oc2+oc3>=2 and oc4!=0){
        if(t.size()>=6 and t.size()<=12){
            cout<<t<<"\n";
        }
    }
    return 0;
}

求关 STO | OTZ


by LLh_kun @ 2024-11-11 20:49:17

@Song_jiayu 亲测可AC


by Song_jiayu @ 2024-11-12 21:45:08

谢谢大佬,已回关


|