Re: ACM 10696 ... 迴圈只比遞迴快1秒

看板C_and_CPP作者 (ssagit)時間18年前 (2006/07/07 03:54), 編輯推噓8(805)
留言13則, 6人參與, 最新討論串1/2 (看更多)
花了三個小時, 能用的髒方法幾乎用上了, 只剩用一個 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

07/07 03:58, , 1F
害我掉一名的兇手原來是你... \./m
07/07 03:58, 1F

07/07 03:59, , 2F
承讓了....
07/07 03:59, 2F

07/07 04:00, , 3F
寫得比我漂亮多了. 另外, 我點了一下你, 戰績輝煌啊, 佩服
07/07 04:00, 3F

07/07 04:03, , 4F
其實我解出來的題目還算少的, 有不少人都已經破百了....
07/07 04:03, 4F

07/07 10:34, , 5F
要破百其實很簡單 不要去鑽這種時間 然後就一直寫就好了
07/07 10:34, 5F

07/07 10:34, , 6F
其實acm裡面簡單的題目很多~~
07/07 10:34, 6F

07/07 11:57, , 7F
樓上就是一個破百的例子
07/07 11:57, 7F

07/07 12:09, , 8F
樓上是一個破千的例子
07/07 12:09, 8F

07/07 23:57, , 9F
樓樓上是破千的強者
07/07 23:57, 9F

07/08 00:47, , 10F

07/08 00:48, , 11F
樓樓樓上剛好在第10名, 看了一下, 前25名有3個是台灣人...
07/08 00:48, 11F

07/08 00:50, , 12F
重新看了一下這一題的排名, 板上另一位強者只花0.057秒,
07/08 00:50, 12F

07/08 00:51, , 13F
不知道他願不願意分享是用什麼方法寫出來的....
07/08 00:51, 13F
文章代碼(AID): #14hMfZI- (C_and_CPP)
文章代碼(AID): #14hMfZI- (C_and_CPP)