1 solutions

  • 0
    @ 2026-1-10 12:05:12
    #include <bits/stdc++.h>
    using namespace std;
    
    int cnt[11],cnt2[11];//cnt记录限定条件 
    
    int main(){
    	int ans=0;
    	string s;
    	cin>>s;
    	for(int i=0;i<s.size();i++) {
    		if(s[i]=='o')cnt[i]=1;
    		if(s[i]=='x')cnt[i]=-1;
    		//?不用处理 
    	}
    	
    	//枚举 0000-9999所有的密码-->判断是否符合条件
    	for(int i=0;i<=9999;i++){
    		//生成密码 
    		char c[5];//包含结束字符
    		sprintf(c,"%04d",i);
    		
    		//统计枚举密码中每个数的出现次数
    		memset(cnt2,0,44);
    		for(int i=0;i<=3;i++) cnt2[c[i]-'0']++;
    		
    		//枚举0-9,判断是否符合限制条件
    		bool flag =true;
    		for(int i=0;i<10;i++){
    			if(cnt[i]==1 && !cnt2[i]){
    				flag=0;
    				break;
    			}
    			if(cnt[i]==-1 && cnt2[i]){
    				flag=0;
    				break;
    			}
    			
    		} 
    		if(flag) ans++;
    	} 
    	cout<<ans;
    	return 0;
    }
    ···
    • 1

    Information

    ID
    2634
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    3
    Tags
    # Submissions
    7
    Accepted
    6
    Uploaded By