#1384: d134沒題目寫,來提供想法


morris1028 (碼畜)

學校 : 國立花蓮高級中學
編號 : 3529
來源 : [114.37.59.62]
最後登入時間 :
2021-07-12 19:00:43
d134. 00369 - Combinations -- UVa369 | From: [118.160.206.243] | 發表日期 : 2009-02-12 20:49

我採用的方式:
1.
首先先用陣列[階層]把數存好,陣列所存的東西是math[n]~math[m] 值互相對應m格就是m,再來就是把能除的,將那一個除掉,一定能除,但是會可能分散再別的數裡面,所以會用到公因數。
ex.18 6
我會取math[13]=13,math[14]=14....到math[18]=18
然後除1.2.3.4.5.6 這些數字再以上的陣列去搜尋,並把他們除掉
遇到2 math[14]=7;
   3 math[15]=5;
  4 math[16]=4;
   5 math[15]=1;
   6 math[16]=2;math[18]=6;
總結 math[13]=13,math[14]=7,math[15]=1,math[16]=2,math[17]=17,math[18]=6
之後再將剩下的通通乘出來,之所以這樣做,是怕途中暴掉,用double又不準確
這樣的話,就可以使用大數囉[答案的部分]!!
2.等網友提供

 
#1397: Re:d134沒題目寫,來提供想法


morris1028 (碼畜)

學校 : 國立花蓮高級中學
編號 : 3529
來源 : [114.37.59.62]
最後登入時間 :
2021-07-12 19:00:43
d134. 00369 - Combinations -- UVa369 | From: [118.161.214.214] | 發表日期 : 2009-02-15 22:33

我採用的方式:
1.
首先先用陣列[階層]把數存好,陣列所存的東西是math[n]~math[m] 值互相對應m格就是m,再來就是把能除的,將那一個除掉,一定能除,但是會可能分散再別的數裡面,所以會用到公因數。
ex.18 6
我會取math[13]=13,math[14]=14....到math[18]=18
然後除1.2.3.4.5.6 這些數字再以上的陣列去搜尋,並把他們除掉
遇到2 math[14]=7;
   3 math[15]=5;
  4 math[16]=4;
   5 math[15]=1;
   6 math[16]=2;math[18]=6;
總結 math[13]=13,math[14]=7,math[15]=1,math[16]=2,math[17]=17,math[18]=6
之後再將剩下的通通乘出來,之所以這樣做,是怕途中暴掉,用double又不準確
這樣的話,就可以使用大數囉[答案的部分]!!
2.等網友提供

其實好像不用那麼複雜,還可以修@@,懶得改了
 
#1495: Re:d134沒題目寫,來提供想法


snail (蝸牛)

學校 : 新北市立板橋高級中學
編號 : 2021
來源 : [101.137.60.28]
最後登入時間 :
2024-11-10 16:35:50
d134. 00369 - Combinations -- UVa369 | From: [218.211.230.114] | 發表日期 : 2009-03-05 22:57

C (n, m) = C (n, m-1) * (n-m+1) / m

只要先把 (n-m+1) / m 約分,然後先除分母再乘分子就不會爆了!用遞迴或迴圈來做都行。

 
#1579: Re:d134沒題目寫,來提供想法


snail (蝸牛)

學校 : 新北市立板橋高級中學
編號 : 2021
來源 : [101.137.60.28]
最後登入時間 :
2024-11-10 16:35:50
d134. 00369 - Combinations -- UVa369 | From: [220.133.52.85] | 發表日期 : 2009-03-18 16:38

這題也可以用巴斯卡三角形來寫。C(n,m) 其實就是巴斯卡三角形的第 n 行第 m 項 (n, m 從 0 開始算)。求巴斯卡三角形只用到加法,絕對不會在計算過程中爆掉!
 
#2848: Re:d134沒題目寫,來提供想法


chchwy (Matt)

學校 : 國立臺北教育大學
編號 : 4692
來源 : [61.69.45.102]
最後登入時間 :
2019-02-08 07:46:25
d134. 00369 - Combinations -- UVa369 | From: [59.112.167.207] | 發表日期 : 2009-11-26 02:00

這題也可以用巴斯卡三角形來寫。C(n,m) 其實就是巴斯卡三角形的第 n 行第 m 項 (n, m 從 0 開始算)。求巴斯卡三角形只用到加法,絕對不會在計算過程中爆掉!

事實上會爆掉...而且中間爆掉還會蔓延到下面的數字.... 
#3605: Re:d134沒題目寫,來提供想法


chchwy (Matt)

學校 : 國立臺北教育大學
編號 : 4692
來源 : [61.69.45.102]
最後登入時間 :
2019-02-08 07:46:25
d134. 00369 - Combinations -- UVa369 | From: [120.127.47.37] | 發表日期 : 2010-04-01 18:22

 


本題的一個簡單解法就是用long double

 printf("%.0Lf", ... ); 

 
#3606: Re:d134沒題目寫,來提供想法


chchwy (Matt)

學校 : 國立臺北教育大學
編號 : 4692
來源 : [61.69.45.102]
最後登入時間 :
2019-02-08 07:46:25
d134. 00369 - Combinations -- UVa369 | From: [120.127.47.37] | 發表日期 : 2010-04-01 18:22

 


本題的一個簡單解法就是用long double

 printf("%.0Lf", ... ); 

 
#4202: Re:d134沒題目寫,來提供想法


asas (向諸神與地雷醬獻上祈禱)

學校 : 不指定學校
編號 : 5185
來源 : [36.228.104.72]
最後登入時間 :
2024-03-06 23:29:54
d134. 00369 - Combinations -- UVa369 | From: [124.218.23.53] | 發表日期 : 2010-09-04 07:32

 


本題的一個簡單解法就是用long double

 printf("%.0Lf", ... ); 


題目有說"你可以假設你的答案C不會超出 C++的 long long int 的範圍。" 所以如果那個數字overflow....影響到的數字也一定會overflow....所以說那些測資根本不會在測資中出現~~只提出題者疏忽不小心加入了出過答案範圍的測資.....存答案的改成unsigned long long就可以AC了.....uva只要long long就可以AC! 
ZeroJudge Forum