iT邦幫忙

0

新手數學(組合C)寫法

我算數學(組合C)的時候,靈光一閃想設計一個程式幫我跑,但出來的結果總是怪怪的,各位大大可以提供給我能執行成功或者是寫得更好的方法嗎?(我是個新手所以寫得有點遭,請包涵><)

#include<iostream>
using namespace std;
int main()
{
	int n,k,i,x,y,t,temp=1;
	cin>>n>>k; //輸入2個數字。前面是n,另一個是k

	if(n>=k)
{
	for(x=1;x<=n;x++){
		temp*=x; //n!
	}
		for(y=1;y<=n-k;y++){
		temp*=y; //(n-k)!
	}
		for(t=1;t<=k;t++){
		temp*=t; //k!
	}

	cout<<x/y/t<<endl; //n!/(n-k)!/k!
	
	return 0;
	
}

	else cout<<"格式不正確,再輸入一次" <<endl; 
	
}
小魚 iT邦高手 1 級 ‧ 2018-09-23 07:48:50 檢舉
總是要先說你想要做什麼吧?
連你要做什麼也要別人猜嗎?
你是覺得別人很閒嗎?
marlin12 iT邦新手 3 級 ‧ 2018-09-23 09:20:54 檢舉
可能他是要寫程式去計算數學裏的[組合]吧
nCr = n! / (r! x (n-r)!)
marlin12感恩,我是那個意思沒錯QQ

1 個回答

0
海綿寶寶
iT邦超人 1 級 ‧ 2018-09-23 10:18:56
最佳解答
#include<iostream>
using namespace std;
int main()
{
	int n,k,i,x,y,t,temp=1;
	cin>>n>>k; //輸入2個數字。前面是n,另一個是k

	if(n>=k) {
        x=1;
        for(temp=1;temp<=n;temp++){
            x*=temp; //n!
        }
        y=1;
        for(temp=1;temp<=(n-k);temp++){
            y*=temp; //(n-k)!
        }
        t=1;
        for(temp=1;temp<=k;temp++){
            t*=temp; //k!
        }
        cout<<x/(y*t)<<endl; //n!/(n-k)!/k!	
        return 0;
    } 
    else 
        cout<<"格式不正確,再輸入一次" <<endl; 	
}

謝謝你啦>.<

這個練習建議用 遞迴方式 寫, 比較有練習價值.

好的><

我要發表回答

立即登入回答