Codeforces 1228A、Distinct Digits
原题
题目大意
给定一个区间(上下界都是整数),判断该区间内是否存在一个整数的数字两两不同。
数据结构
一个数组flag,记录0-9是否出现过。
思路
外层循环枚举该区间内所有整数。
首先初始化flag为全0。然后,内层循环对每个整数l,枚举所有数字d,令flag[d]=1。
如果对某个数字d,flag[d]==1已经成立,则表示数字d出现过,但d现在又出现了,则i不符合条件,继续外层循环,判断i+1。
如果没有数字重复出现。输出l,结束外层循环。
当外层循环结束后,仍没有符合条件的数字,则输出-1。
我的代码
#include <cstdio>
int main(){
int l,r;
scanf("%d %d", &l, &r);
while(l <= r){
bool flag[10] = {false};
int p = l;
while(p > 0){
if(*(flag + p % 10)){
break;
}else{
*(flag + p % 10) = true;
}
p /= 10;
}
if(p == 0) {
printf("%d", l);
break;
}
l++;
}
if(l > r) printf("-1");
return 0;
}