UVALive 5739 User Names
来源:互联网 发布:雪梨家淘宝店铺 编辑:程序博客网 时间:2024/04/30 03:59
//UVALive 5739 User Names/*对于每一个名字,放进map里面检查一下,如果有重复,则加上数字重复以上步骤*/#include <iostream>#include <cstdio>#include <cstring>#include <map>using namespace std;map<string,int> v;char s[88];int cs;char tmp[88];int maxlen,n;int main(){ int cas = 0; while(scanf("%d %d",&n,&maxlen)==2) { cas++; if (n==0&&maxlen==0) break; printf("Case %d\n",cas); v.clear(); int ct = 0; char re; for (int k=0;k<n;k++) { scanf("%s",tmp); cs = 0; re = getchar(); int i=0; while(i<strlen(tmp)) { if (tmp[i]>='A'&&tmp[i]<='Z') { s[cs++] = tmp[i]-'A'+'a'; break; }else if (tmp[i]>='a'&&tmp[i]<='z') { s[cs++] = tmp[i]; break; } i++; } scanf("%s",tmp); re = getchar(); while (re!='\n') { scanf("%s",tmp); re = getchar(); } i=0; while(i<strlen(tmp)&&cs<maxlen) { if (tmp[i]>='A'&&tmp[i]<='Z') { s[cs++] = tmp[i]-'A'+'a'; }else if (tmp[i]>='a'&&tmp[i]<='z') { s[cs++] = tmp[i]; } i++; } s[cs] = '\0'; string toj (s); int no = 0; char num[255]; while(v[toj]==1) { no++; if (no==1&&cs==maxlen) s[cs-1]='\0'; if (no==10) { if (cs==maxlen) s[cs-2]='\0'; if (cs==(maxlen-1)) s[cs-1]='\0'; } sprintf(num, "%d", no); toj = s; toj += num; } v[toj]++; printf("%s\n",toj.c_str()); } } return 0;}