團體程序設計天梯賽-練習集-L1-033. 出生年

L1-033. 出生年

以上是新浪微博中一奇葩貼:「我出生於1988年,直到25歲才遇到4個數字都不相同的年份。」也就是說,直到2013年才達到「4個數字都不相同」的要求。本題請你根據要求,自動填充「我出生於y年,直到x歲才遇到n個數字都不相同的年份」這句話。c++

輸入格式:spa

輸入在一行中給出出生年份y和目標年份中不一樣數字的個數n,其中y在[1, 3000]之間,n能夠是二、或三、或4。注意不足4位的年份要在前面補零,例如公元1年被認爲是0001年,有2個不一樣的數字0和1。code

輸出格式:blog

根據輸入,輸出x和能達到要求的年份。數字間以1個空格分隔,行首尾不得有多餘空格。年份要按4位輸出。注意:所謂「n個數字都不相同」是指不一樣的數字正好是n個。如「2013」被視爲知足「4位數字都不一樣」的條件,但不被視爲知足2位或3位數字不一樣的條件。ci

輸入樣例1:
1988 4
輸出樣例1:
25 2013
輸入樣例2:
1 2
輸出樣例2:
0 0001
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long LL;
 4 const int maxn = 100010;
 5 int main() {
 6     int y, n, x;
 7     cin >> y >> n;
 8     int j;
 9     int tmp, cnt;
10     int i, a[20];
11     for (tmp = y; tmp < 100000; tmp++) {
12         i = tmp;
13         cnt = 0;
14         memset (a, 0, sizeof (a) );
15         j = i / 1000;
16         a[j]++;
17         i %= 1000;
18         j = i / 100;
19         a[j]++;
20         i %= 100;
21         j = i / 10;
22         a[j]++;
23         i %= 10;
24         a[i]++;
25         for (int k = 0; k < 10; k++) {
26             if (a[k] != 0)
27                 cnt++;
28         }
29         if (cnt == n) {
30             x = tmp - y;
31             break;
32         }
33     }
34     printf ("%d %04d\n", x, tmp);
35     return 0;
36 }
相關文章
相關標籤/搜索