發表新討論
#1384

morris1028(碼畜)
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

morris1028(碼畜)
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

snail(蝸牛)
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

snail(蝸牛)
d134. 00369 - Combinations -- UVa369 | From: [220.133.52.85] | 發表日期 : 2009-03-18 16:38

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

chchwy(Matt)
d134. 00369 - Combinations -- UVa369 | From: [59.112.167.207] | 發表日期 : 2009-11-26 02:00

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

事實上會爆掉...而且中間爆掉還會蔓延到下面的數字.... 
文章性質 :
|
| 回應文章 | 回原始文章
#3605

chchwy(Matt)
d134. 00369 - Combinations -- UVa369 | From: [120.127.47.37] | 發表日期 : 2010-04-01 18:22

 


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

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

 
文章性質 :
|
| 回應文章 | 回原始文章
#3606

chchwy(Matt)
d134. 00369 - Combinations -- UVa369 | From: [120.127.47.37] | 發表日期 : 2010-04-01 18:22

 


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

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

 
文章性質 :
|
| 回應文章 | 回原始文章
#4202

asas(打不出來只好讓能幹的妹妹幫忙death~)
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