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;
}

相关