作者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