リンク:
https://codeforces.com/contest/1263/problem/B
質問の意味:
PINコードは正確に4桁の数字から成る文字列です。可能なPINコードの例:7013、0000と0990.くださいノートPINコードでも0で、任意の数字で始めることができます。
polycarpが有するn個(2≤n≤10)銀行カード、i番目のカードのPINコードは、PIです。
polycarpは最近、別のカードに異なるPINコードを設定した方がよいという勧告を読みました。こうして彼は、すべてのn個のコードが異なるとなるように、彼のカードのPINコードの桁の最小数を変更したいです。
正式に、一の工程で、のpolycarpは、i番目のカード(1≤i≤n)、そのPINコードPIを一つ選択位置(1〜4)ピック、および任意の他のこの位置に数字を変更します。彼はすべてのPINコードが異なるとなるような最小桁数を変更する必要があります。
polycarpはすぐにこの問題を解決しました。あなたはそれを解決することはできますか?
アイデア:
N個の最大値は、直接暴力を変更する、10であります
コード:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin >> t;
while(t--)
{
int n;
string s[10];
map<string, int> Mp;
cin >> n;
for (int i = 0;i < n;i++)
cin >> s[i], Mp[s[i]]++;
int ans = 0;
for (int i = 0;i < n;i++)
{
if (Mp[s[i]] > 1)
{
ans++;
Mp[s[i]]--;
for (int j = 0;j < 10;j++)
{
s[i][0] = j+'0';
if (Mp[s[i]] == 0)
break;
}
Mp[s[i]]++;
}
}
cout << ans << endl;
for (int i = 0;i < n;i++)
cout << s[i] << endl;
}
return 0;
}