C
1コード 2#include <stdio.h> 3#include <stdlib.h> 4#include <string.h> 5 6double combination(int n,int k){ 7 int i; 8 double c=1; 9 for(i=1;i<=k;i++){ 10 c=(double)(n-k+i)/(double)(k-i+1)*c; 11 } 12 return c; 13} 14 15int main(void){ 16 int n,k; 17 printf("plase input n "); 18 scanf("%d",&n); 19 printf("please input k "); 20 scanf("%d",&k); 21 printf("combination(%d,%d)=%lf\n",n,k,combination(n,k)); 22 return 0; 23}
combinationとcをダブル型にすれば出力できたのですがcombinationとCの型名をlongに変更して、c=の行だけを修正することによって出力
できるようにしたいです。
((double)(n-k+i))/((double)(k-i+1))*(double)c;のようにキャスト変更したりしたのですが
うまく値が出力されませんでした。どなたかわかる方がいらしたら教えて頂きたいです。
よろしくお願いします。
追記部分
c=?????この??の部分だけいじるだけで実現して頂きたいです。
C
1コード 2#include <stdio.h> 3#include <stdlib.h> 4#include <string.h> 5 6long combination(int n,int k){ 7 int i; 8 long c=1; 9 for(i=1;i<=k;i++){ 10 c=((double)(n-k+i))/((double)(k-i+1))*(double)c; 11 } 12 return c; 13} 14 15int main(void){ 16 int n,k; 17 printf("plase input n "); 18 scanf("%d",&n); 19 printf("please input k "); 20 scanf("%d",&k); 21 printf("combination(%d,%d)=%ld\n",n,k,combination(n,k)); 22 return 0; 23}
実行結果
plase input n 13
please input k 5
combination(13,5)=546
参考までに上のコードの結果
plase input n 13
please input k 5
combination(13,5)=1287.000000
回答2件
あなたの回答
tips
プレビュー