作者k7t7v7 (老王)
看板b99902HW
標題[作業] 雙班計程作業(找GCD和LCM那題)的問題
時間Tue Oct 5 21:47:08 2010
(由於強者目前沒在線上,我就來這裡問問看好了)
今天晚上來做這題發現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
1F:推 harry2145:+1 我也想知道 原來不只我這樣 10/05 21:51
2F:→ bztfir:其實你可以先除再乘 Ex:x*y/gcd → (x/gcd)*y 10/05 21:52
3F:→ bztfir:這樣就會過了^^ 10/05 21:52
4F:推 q22554647:我的問題也是這個耶..仁捷一語驚醒夢中人=ˇ=.. 10/05 21:59
5F:→ k7t7v7:To樓上:真的行得通ㄟ,感謝!XD(繼續痛苦的想第二題= =) 10/05 22:00
6F:推 ianlini:其實提示已經超級清楚了.... 10/05 22:02
7F:→ ianlini:原PO為何不用輾轉相除法...? 10/05 22:03
8F:推 deicide218:用這招會讓CPU燒壞,只要輸入兩個六位數左右的就會... 10/05 22:12
9F:→ chiang9804:真的嗎?可是我是這麼做的阿... 10/05 22:18
10F:推 pf5179:他只是要我們先除後乘的話 我真的完完全全無法理解幹嘛出那 10/05 22:55
11F:→ pf5179:麼大的測資...這樣有比較帥嗎@@ 10/05 22:55
12F:推 s864372002:int的範圍到2147483647,所以出到10^8~9次方的測資都算 10/05 23:41
13F:→ s864372002:合理的噢,假如讓一個變數一直加到10^8需要多久...... 10/05 23:41
14F:推 JT0109:測資真的大得誇張,我偷開大用long long int搞定的 10/06 00:09
15F:推 ianlini:燒壞是誇飾嗎= = 10/06 00:10
16F:推 raychin4563:執行時間太久是因為電腦計算太多次了~ 10/06 01:11
17F:→ raychin4563:用輾轉相除法才是最好的~ 10/06 01:11
18F:→ raychin4563:是說~程式都這樣的orz 考試或者比賽都會有這種暗黑測 10/06 01:13
19F:→ raychin4563:資,所以常常要一直DEBUG~ 10/06 01:14
20F:推 lacrimosacat:這測資讓我心情十分不好 10/06 08:31
21F:→ OppOops:剛剛看到怪怪的程式碼 用的方法跟原PO類似.. 10/06 12:50
22F:→ OppOops:scanf ("%d%d",&x,&y); 10/06 12:50
23F:→ OppOops:for (z=1 ? x:y ; z>0 ;z--) 10/06 12:50
24F:→ OppOops:想問一下 for 第一個分號以前的意思 10/06 12:52
25F:→ raychin4563:這好像有點打錯><? 應該是(z==1?x:y;z>0;z--) 10/07 19:52
26F:→ raychin4563:然後意思是~z等於1嗎?如果等於這格的值就是x:否則是y 10/07 19:53
27F:推 ianlini:這格的值是x還是y有影響嗎? 10/07 22:48