[ACM] 10013 WA

看板C_and_CPP作者 (三好米)時間13年前 (2011/03/12 18:08), 編輯推噓3(306)
留言9則, 3人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) ACM Q10013: Super long sum "WA" RE的問題解決了,但是是WA,找到的測資做出來也都是對的QQ 希望得到的正確結果: 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Linux 有問題的code: (請善用置底文標色功能) #include<stdio.h> #include<stdlib.h> int a[2000000],ans[1000001]; int main(){ int n,z,M; int i,j,k,t; int sum,carry; while(scanf("%d",&n)!=EOF){ for(z=0;z<n;z++){ k=0; scanf("%d",&M); for(i=M*2-1;i>=0;i=i-2) scanf("%d %d",&a[i],&a[i-1]); for(j=0;j<M*2;j=j+2){ sum=a[j]+a[j+1]; if(sum>=10){ carry=sum/10; if(j+2<M*2){ a[j+2]+=carry; ans[k]=sum%10; k++;} else{ ans[M]=carry; ans[k]=sum%10; k+=2;}} else{ ans[k]=sum; k++;} } for(t=k-1;t>=0;t--) printf("%d",ans[t]); printf("\n\n"); }} return 0;} 補充說明: 目前找到的測資輸入都是對的 不過就是一直RE,把陣列size改更大也是RE 不知道問題出在哪, 懇請大家幫忙!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.242.14.244

03/12 18:34, , 1F
這兩個陣列會吃掉 12M 的空間...stack 我不知道夠不夠就是了
03/12 18:34, 1F

03/12 18:35, , 2F
開全域應該就沒事了
03/12 18:35, 2F

03/12 18:35, , 3F
另外 a[j+2] 要小心出界...
03/12 18:35, 3F
謝謝大大^^ 但是現在變WA... ※ 編輯: mhwgo 來自: 111.242.11.9 (03/12 21:22)

03/13 02:06, , 4F
不知道有沒有興趣重寫 把程式用多個函式分開
03/13 02:06, 4F

03/13 03:54, , 5F
最後的 printf("\n\n") 可能有問題
03/13 03:54, 5F

03/13 03:55, , 6F
因為題目說 There is a blank line between output blocks
03/13 03:55, 6F

03/13 03:55, , 7F
並不是 every output blocks
03/13 03:55, 7F

03/13 03:55, , 8F
你的寫法在最後面會多 output 一行空白
03/13 03:55, 8F

03/13 03:56, , 9F
另外 ... 你程式的縮排不是很好讀 @@"
03/13 03:56, 9F
文章代碼(AID): #1DUqOxGG (C_and_CPP)