对于这道题呢,我认为比较简单的方法是用集合来做,我们先来看看集合set的介绍哈:set中所有元素是有序的,且只能出现一次。(比如:我们存入 1233 ,实际集合中实际内容是123 ,因为3只能出现一次)
好,我们读了这道题之后,就会发现用set来解会方便很多。
废话不多说,上代码:(用的dev c++)
#include<bits/stdc++.h> using namespace std; int main() { int y, n; cin >> y >> n; set <int> s; for (int i = y;; i++) { s.clear();//清空集合 int t = i;//临时变量 for (int j = 1; j <= 4; j++) { s.insert(t % 10);//将数存入集合,注意,如果数<1000 也会存入4位数额 t /= 10; } if (s.size() == n) {//若集合的size 等于n 满足条件-->输出 printf("%d %.4d", i - y, i); break; } } return 0; }
图片版