很简单,先比长度,长度相等从高位开始比
但是不加下面这个
printf("%*[^\n]");
就0分WA,输出总是比答案大1,真是令人苦恼,可能评测机是windows,用/r/n换行,数字后面还有/r,getchar()只吃掉了/r,单独的/n就被当作一个数字处理了
#include<stdio.h>
#define _for(i,j,k) for(int i=j;i<k;i++)
int gr[2000]={0},buf[2000]={0};
int main()
{
int n;
scanf("%d",&n);
scanf("%*[^\n]");
getchar();
int grb=0,ans=1;
int p=0;
char c;
while ( (c=getchar())!=EOF&&c!=10) {
if (c>47&&c<58)
gr[p++]=c-48;
}
grb=p;
_for(i,1,n) {
p=0;
while ( (c=getchar())!=EOF&&c!=10) {
if (c>47&&c<58)
buf[p++]=c-48;
}
int bufb=p,sw=0;
if ( bufb>grb )
sw=1;
else if ( bufb==grb )
_for(j,0,grb) {
if ( gr[j]>buf[j] ) {
sw=0;
break;
}
if ( gr[j]<buf[j] ) {
sw=1;
break;
}
}
if (sw) {
_for(j,0,bufb)
gr[j]=buf[j];
grb=bufb;
ans=i+1;
}
}
printf("%d\n",ans);
_for(i,0,grb)
printf("%d",gr[i]);
return 0;
}