看板 b99902HW 關於我們 聯絡資訊
(由於強者目前沒在線上,我就來這裡問問看好了) 今天晚上來做這題發現TA有更新上overflow的情況, 所以我沒有用輾轉相除法來作這題,而是設了一個變數n, 使輸入的兩個欲檢驗的整數(x,y)不斷去%n,並且不斷使得n=n-1,來找gcd. 而找出gcd後,再用(x*y)/gcd來找lcm.後來我用了幾個自己令的測資(數字不大)都無誤. 然而上傳後,發現只有第一個測資有通過,我想到可能是找lcm那裡的 (x*y)有overflow,所以我就再令了一個變數m,使m不斷去%x和y, 並不斷使得m=m+1,來找lcm.後來用了幾個自己令的測資(數字都像TA說的 那樣大)都無誤. 然而在次上傳後,仍只有一分,查看detail更發現變成只有第三的測資通過, 另外兩個則顯示"你的程式當掉了!>"< 原因:執行時間或記憶體用量超過限制" 到底為什麼啊?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.165.164.156
harry2145:+1 我也想知道 原來不只我這樣 10/05 21:51
bztfir:其實你可以先除再乘 Ex:x*y/gcd → (x/gcd)*y 10/05 21:52
bztfir:這樣就會過了^^ 10/05 21:52
q22554647:我的問題也是這個耶..仁捷一語驚醒夢中人=ˇ=.. 10/05 21:59
k7t7v7:To樓上:真的行得通ㄟ,感謝!XD(繼續痛苦的想第二題= =) 10/05 22:00
ianlini:其實提示已經超級清楚了.... 10/05 22:02
ianlini:原PO為何不用輾轉相除法...? 10/05 22:03
deicide218:用這招會讓CPU燒壞,只要輸入兩個六位數左右的就會... 10/05 22:12
chiang9804:真的嗎?可是我是這麼做的阿... 10/05 22:18
pf5179:他只是要我們先除後乘的話 我真的完完全全無法理解幹嘛出那 10/05 22:55
pf5179:麼大的測資...這樣有比較帥嗎@@ 10/05 22:55
s864372002:int的範圍到2147483647,所以出到10^8~9次方的測資都算 10/05 23:41
s864372002:合理的噢,假如讓一個變數一直加到10^8需要多久...... 10/05 23:41
JT0109:測資真的大得誇張,我偷開大用long long int搞定的 10/06 00:09
ianlini:燒壞是誇飾嗎= = 10/06 00:10
raychin4563:執行時間太久是因為電腦計算太多次了~ 10/06 01:11
raychin4563:用輾轉相除法才是最好的~ 10/06 01:11
raychin4563:是說~程式都這樣的orz 考試或者比賽都會有這種暗黑測 10/06 01:13
raychin4563:資,所以常常要一直DEBUG~ 10/06 01:14
lacrimosacat:這測資讓我心情十分不好 10/06 08:31
OppOops:剛剛看到怪怪的程式碼 用的方法跟原PO類似.. 10/06 12:50
OppOops:scanf ("%d%d",&x,&y); 10/06 12:50
OppOops:for (z=1 ? x:y ; z>0 ;z--) 10/06 12:50
OppOops:想問一下 for 第一個分號以前的意思 10/06 12:52
raychin4563:這好像有點打錯><? 應該是(z==1?x:y;z>0;z--) 10/07 19:52
raychin4563:然後意思是~z等於1嗎?如果等於這格的值就是x:否則是y 10/07 19:53
ianlini:這格的值是x還是y有影響嗎? 10/07 22:48