对于001,1处理会出问题的情况,再所有的数字前面再加一个1,就变成1001和11,区分开来了,
itoa函数codefoeces上c++14才有
#include<iostream>
#include<string.h>
#include<stdio.h>
#include<map>
#include<string>
#include<stdlib.h>
using namespace std;
char str[70000+10][10];
char s[10];
map<int,int> m;
int n;
void solve(char p[],int num){
for(int i=0;i<9;i++){
int v=1;
for(int j=i;j<9;j++){
v=v*10+p[j]-'0';
if(m[v]==0) m[v]=num;
else if(m[v]!=num) m[v]=-1;
}
}
}
void get_ans(char p[]){
int ans=0x7fffffff;
for(int i=0;i<9;i++){
int v=1;
for(int j=i;j<9;j++){
v=v*10+p[j]-'0';
if(m[v]!=0 && m[v]!=-1){
ans=min(ans,v);
}
}
}
itoa(ans,s,10);
printf("%s\n",s+1);
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%s",str[i]);
}
m.clear();
for(int i=1;i<=n;i++){
solve(str[i],i);
}
for(int i=1;i<=n;i++){
get_ans(str[i]);
}
}