#10577: 一起整理一份測試題目,幫助a017的程式debug


Weberkx3 (Weberkx3)

學校 : 義守大學
編號 : 55343
來源 : [220.143.134.53]
最後登入時間 :
2023-02-20 21:58:55
a017. 五則運算 | From: [101.139.116.250] | 發表日期 : 2015-12-27 03:40

我使用 long long 做所有運算,略大於2^31的數字也能計算,可識別負數
原理是採用二維陣列[2][10000]
先掃描整個字串遇到()則用遞迴處理(),做分割整理,將答案做一個整數儲存
 
[0]=整數 or 運算子 '+'  '-'  '*'  '/'  '%'
[1]=數值種類與優先權,整數=1,( '+'  '-' ) = 2,('*'  '/'  '%' ) = 3
 
如此能得到完整的數字與運算子資料,透過遞迴讓()內容也直接變成整數
 
接下來再做*/%計算,left most
做過乘除運算會被標記[1]=0,在下階段的加減運算會被排除
 
最後做加減,就很容易
 

我的code跑過以下的計算,皆正確,但無法AC,不清楚問題在哪裡

希望有興趣的人一起整理一份測試題目與答案,一起幫助a017的程式debug

2226548 * ( 328785 + 4852 ) * 542

2 - -3 * 3 + ( -8 * 2 % 7 ) + -9 * 6

1 + (((( 2 + (3 + -4) * (8 + 9)) / 5 /  (6 * 57 - 4) * 8 + 5) % 4) - 16 * 4 + 2) * 3

 

答案(來自 Google 計算機)

4.0262947e+14

-38

-182 ( -182.213017751 )

 
 
網路上有些可以AC的code存在,可是有時計算結果與 google 計算機不同
那麼究竟是什麼情況無法AC,相信在數量足夠的題目之下,可以找到答案吧
 
 
#10935: Re:一起整理一份測試題目,幫助a017的程式debug


gary19920103 (Gary)

學校 : 國立聯合大學
編號 : 25619
來源 : [114.33.196.82]
最後登入時間 :
2017-07-29 03:27:09
a017. 五則運算 | From: [61.227.112.252] | 發表日期 : 2016-05-17 20:10

 

輸入說明 : 

輸入一個字串,其中包含運算元及運算子,為了方便讀取,所有的運算子及運算元均以空格區隔。

運算元為 0 ~231 -1 的整數

運算子則包含 + - * / % 及 ( )

運算時請注意先乘除後加減及() 優先運算的計算規則

輸出說明 : 

輸出結果。為了避免小數點誤差,所有的運算過程都不會產生小數點,可以放心使用整數進行運算

 

是不是可以先排除輸入含負數呢

 
#11126: Re:一起整理一份測試題目,幫助a017的程式debug


iven00000000 (羽音穎次方)

學校 : 國立臺灣科技大學
編號 : 48522
來源 : [61.219.144.211]
最後登入時間 :
2017-10-20 15:22:23
a017. 五則運算 | From: [111.243.177.187] | 發表日期 : 2016-07-05 23:10

 

我直接呼叫system call也不能AC
echo 1 | awk '{printf s}'
s為輸入的字串




 
#11127: Re:一起整理一份測試題目,幫助a017的程式debug


iven00000000 (羽音穎次方)

學校 : 國立臺灣科技大學
編號 : 48522
來源 : [61.219.144.211]
最後登入時間 :
2017-10-20 15:22:23
a017. 五則運算 | From: [111.243.177.187] | 發表日期 : 2016-07-05 23:11

 

有加換行




 
ZeroJudge Forum