т.е. f(n,1) = f(n,n) = n и f(n,k) = f(n-1,k) + f(n-1,k-1) для 1 < k < n
Мне нужно напечатать значение по модулю 1000000007.
Следующий код :
Код: Выделить всё
#include
#include
#include
unsigned long int returnModPascal(unsigned long int n,unsigned long int k);
int main()
{
int t;
unsigned long int ans,n,k;
scanf("%d",&t);
while(t--)
{
scanf("%lu %lu",&n,&k);
ans=returnModPascal(n,k);
printf("%lu",ans);
}
return 0;
}
unsigned long int returnModPascal(unsigned long int n,unsigned long int k)
{
unsigned long int tempans,tempans1,tempans2;
if(k==1 || k==n)
tempans=n;
else
{
tempans1=returnModPascal(n-1,k);
if (tempans1>=1000000007)
tempans1=tempans1%1000000007;
tempans2=returnModPascal(n-1,k-1);
if (tempans2>=1000000007)
tempans2=tempans2%1000000007;
if (tempans1+tempans2>=1000000007)
tempans=tempans1+tempans2-1000000007;
else
tempans=tempans1+tempans2;
}
return tempans;
}
( Он отлично работает с меньшими целочисленными значениями, такими как 23 2 или 12 3 как n&k )
Появляется ошибка
Необработанное исключение по адресу 0x003C3D79 в DummyProject.exe: 0xC00000FD:
Стек переполнение (параметры: 0x00000001, 0x003D2F70).
Любая помощь приветствуется.
Подробнее здесь: https://stackoverflow.com/questions/190 ... puting-ele