您的位置:首页 > 其它

洛谷 P1781 宇宙总统 题解

2018-11-08 17:36 99 查看

很简单,先比长度,长度相等从高位开始比
但是不加下面这个

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;
}
阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: