Pagini recente » Cod sursa (job #173180) | Cod sursa (job #658146) | Cod sursa (job #2808868) | Cod sursa (job #639348) | Cod sursa (job #526871)
Cod sursa(job #526871)
#include<iostream.h>
#include<fstream.h>
long long put(int n,int m)
{if(m==0)
return 1;
if(m%2==0)
return put(n,m/2)*put(n,m/2);
return n*put(n,(m-1)/2)*put(n,(m-1)/2);}
long long fact(int n)
{if(n==0)
return 1;
return (n*fact(n-1))%98999;}
long s(int n,int m)
{if(n==m)
return 1;
else
if(m==1&&n>1)
if(n%2==0)
return (-1)*fact(n-1);
else
return fact(n-1);
else
return (s(n-1,m-1)-(n-1)*s(n-1,m))%98999;}
long S(int n,int m)
{if(n==m||(m==1&&n>1))
return 1;
else
if(m==2&&n>2)
return (put(2,n-1)-1)%98999;
else
if(m==3&&n>3)
return (((put(3,n-1)+1)/2)-put(2,n-1))%98999;
else
if(m==4&&n>4)
return (((put(4,n-1)-1)/3+put(2,n-1)-put(3,n-1))/2)%98999;
else
if(m==5&&n>5)
return (((put(5,n-1)-put(4,n-1))-(3*(put(5,n-1)-put(3,n-1))/2)+(put(5,n-1)-put(2,n-1))-((put(5,n-1)-1)/4))/6)%98999;
else
return (S(n-1,m-1)+m*S(n-1,m))%98999;}
int main()
{int t,n,m,k,i;
ifstream f1("stirling.in");
ofstream f2("stirling.out");
f1>>t;
for(i=1;i<=t;i++)
{f1>>k>>n>>m;
if(k==1)
f2<<s(n,m)<<endl;
else
f2<<S(n,m)<<endl;}
f1.close();
f2.close();
return 0;}