补题1:Tokitsukaze and Password (easy)
题意:给一个只包含数字0到9,字母a,b,c,d,_.的字符串(1<=length<=9)和一个数字Y,其中a,b,c,d,_;都是未知的,且a,b,c,d直接各不相等,_无限制。问在没有前导0的前提下,a,b,c,d,_;填入数字,得出来的stoi(str)且是8的倍数,且小于Y.的填法有多少种。
做法:题目本身并不难,只需要五重循环枚举a,b,c,d,_;的0到9取值即可一下所有可能即可。虽然简单,但是赛时的时候做不出来,总是不会想到暴力枚举这个做法...重庆市赛的时候签到题也是没有意识到暴力枚举这个...以后要多留意数据范围,合适的时候暴力枚举即可。
unordered_set<int> ans; //避免重复计算
for(int a=0;a<=9;a++){
for(int b=0;b<=9;b++){
for(int c=0;c<=9;c++){
for(int d=0;d<=9;d++){
if(a==b||a==c||a==d||b==c||b==d||c==d) continue;
for(int _=0;_<=9;_++){
string str0=str;
for(int i=0;i<n;i++){
if(str0[i]=='a') str0[i]=a+'0';
if(str0[i]=='b') str0[i]=b+'0';
if(str0[i]=='c') str0[i]=c+'0';
if(str0[i]=='d') str0[i]=d+'0';
if(str0[i]=='_') str0[i]=_+'0';
}
int num=stoi(str0);
if(str0[0]!='0'&&num%8==0&&num<=y||n==1&&str0[0]=='0') ans.insert(num); //留意:单独一个0也是符合条件的
}
}
}
}
}
cout<<ans.size()<<endl;
补题2:
标签:...,暴力,枚举,即可,补题,周报 From: https://www.cnblogs.com/ouhq/p/18007730