L1-033 出生年 (15 分)
暴力穷举!!!
注意前导0,还有 0 也算一个数,不能用 while(year) 判断循环结束 要不然 0 就加不上了。
#include#include using namespace std; int judge(int y) { int a[10], cnt = 0; memset(a, 0, sizeof a); for(int i = 0; i < 4; i++) { a[y%10]++; y /= 10; } for(int i = 0; i < 10; i++) if(a[i]) cnt++; return cnt; } int main() { int y, n; cin >> y >> n; int m = y; while(1) { if(judge(m) == n) { printf("%d %.4d", m - y, m); break; } m++; } return 0; }