作者ssagit (ssagit)
看板C_and_CPP
标题Re: ACM 10696 ... 回圈只比递回快1秒
时间Fri Jul 7 03:57:04 2006
花了三个小时, 能用的脏方法几乎用上了,
只剩用一个 buffer 一次输出和 asm 没用上而已,
时间是 0.131, 目前是第 8 名,
有 Link 有真相,
http://acm.uva.es/p/problemstat.php?p=:10696
下面是我的 Code:
#include <stdio.h>
#include <string.h>
#define MAX 500100
char buf[MAX];
int main()
{
char msg[30]="f91(", s[10], *c=buf, *t1, *t2;
fread(buf, 1, MAX, stdin);
while (1)
{
while (*c<48) c++;
if (*c==48) break;
for (t1=msg+4, t2=s; *c>=48; *t2++=*t1++=*c++);
*t2=0;
if (t2-s>2&&strcmp(s,"100")) {
// strcpy(t1, ") = ");
*(t1)=')';
*(t1+1)=' ';
*(t1+2)='=';
*(t1+3)=' ';
for(t2-=2; --(*t2)<48; (*t2--)+=10);
// strcpy(t1+4, (*s==48) ? s+1 : s);
for(t2= (*s==48) ? s+1 : s, t1+=4; *t2; *t1++=*t2++);
*t1=0;
}
else {
// strcpy(t1, ") = 91");
*(t1)=')';
*(t1+1)=' ';
*(t1+2)='=';
*(t1+3)=' ';
*(t1+4)='9';
*(t1+5)='1';
*(t1+6)=0;
}
puts(msg);
}
return 0;
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.67.201.44
1F:推 jeunder:害我掉一名的凶手原来是你... \./m 07/07 03:58
2F:→ ssagit:承让了.... 07/07 03:59
3F:→ jeunder:写得比我漂亮多了. 另外, 我点了一下你, 战绩辉煌啊, 佩服 07/07 04:00
4F:推 ssagit:其实我解出来的题目还算少的, 有不少人都已经破百了.... 07/07 04:03
5F:推 cplusplus:要破百其实很简单 不要去钻这种时间 然後就一直写就好了 07/07 10:34
6F:→ cplusplus:其实acm里面简单的题目很多~~ 07/07 10:34
7F:推 windows2k:楼上就是一个破百的例子 07/07 11:57
8F:推 hellgod:楼上是一个破千的例子 07/07 12:09
9F:推 SHBK:楼楼上是破千的强者 07/07 23:57
11F:→ ssagit:楼楼楼上刚好在第10名, 看了一下, 前25名有3个是台湾人... 07/08 00:48
12F:推 ssagit:重新看了一下这一题的排名, 板上另一位强者只花0.057秒, 07/08 00:50
13F:→ ssagit:不知道他愿不愿意分享是用什麽方法写出来的.... 07/08 00:51