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;
} 
posted @ 2021-03-16 23:08  capacito  阅读(108)  评论(0编辑  收藏  举报