我想找到(n选择r)大整数,我也必须找出那个数字的mod.
long long int choose(int a,int b)
{
if (b > a)
return (-1);
if(b==0 || a==1 || b==a)
return(1);
else
{
long long int r = ((choose(a-1,b))%10000007+(choose(a-1,b- 1))%10000007)%10000007;
return r;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用这段代码,但我得到了TLE.如果有其他方法可以做,请告诉我.
我在这段代码中收到SIGSEGV错误,我无法弄明白.所以请有人帮助我.我无法理解如果我通过malloc函数将内存分配给数组,我必须以零索引或1启动它.
#include<iostream>
#include<stdio.h>
using namespace std;
#include<malloc.h>
long long int gold_coins(long long int[],long long int);
int main()
{
long long int n,i,d;
long long int* m;
cin>>n;
while(n!=EOF)
{
m = (long long int*) malloc(n+1);
for(i=0;i<=n;i++)
m[i]=i;
d=gold_coins(m,n);
cout<<d<<endl;
cin>>n;
}
return(0);
}
long long int gold_coins(long long int m[],long long int n)
{
if(n<4)
return m[n];
else
{
long long int q=gold_coins(m,n/2)+gold_coins(m,n/3)+gold_coins(m,n/4);
if(q>m[n])
m[n]=q;
return(m[n]);
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢.