C에서 두 숫자의 nPr을 계산하는 함수를 작성했습니다. 큰 숫자를 처리하기 위해이 함수를 적용 할 수 있습니까?C에서 큰 nPr을 계산하는 방법?
저는 1x10^12까지의 값을 계산할 수 있어야합니다. 저는 다양한 데이터 유형을 시도했으며 매우 고생했습니다! 어떤 차이를 보이지 않았다 그러나
도 내가long long nPr(long long int n, long long int k);
long long nPr(long long int n, long long int k){
if (n < 0){
printf("\nERROR - n is less than 0\n\n");
return -1;
}
if (k > n){
printf("\nERROR - k is greater than n\n\n");
return -1;
}
else {
long long int i,result = 1,c=n+1-k;
for(i=c; i<=n; i++)
{
result = result * i;
}
return result;
}
}
을 시도 이들은 repition없이 순열 있습니다 :
#include<stdio.h>
#include<math.h>
int main()
{
long int n=49,k=6;
printf("%li nPr %li = %li\n\n",n,k,nPr(n,k));
return 0;
}
long nPr(long int n, long int k);
long nPr(long int n, long int k){
if (n < 0){
printf("\nERROR - n is less than 0\n\n");
return -1;
}
if (k > n){
printf("\nERROR - k is greater than n\n\n");
return -1;
}
else {
long int i,result = 1,c=n+1-k;
for(i=c; i<=n; i++)
{
result = result * i;
}
return result;
}
}
감사
J
UPDATE
국립 퍼블릭 라디오를? –
나는 그것이 순열의 숫자라고 생각한다. –
@SethCarnegie 아니요, [반복되는 순열] (http://www.mathsisfun.com/combinatorics/combinations-permutations.html) –