DSB_123456 @ 2024-01-29 16:04:31
自己测试也没问题
#include<bits/stdc++.h>
typedef long long i64;
typedef double f64;
using namespace std;
void setlen(int a[], int i)
{
while (a[i] == 0 && i > 0)
i--;
a[0] = i;
}
void numcpy(int a[],int b[]){//b=a
b[0]=a[0];
for(int i=1;i<=b[0];i++)b[i]=a[i];
}
void mult(int a[],int b,int c[]){
for(int i=1;i<=a[0];i++)c[i]+=a[i]*b;
int jw=0;
setlen(c,a[0]+10);
for(int i=1;i<=c[0];i++){
int tmp=c[i]+jw;
jw=tmp/10;
c[i]=tmp%10;
}
if(jw!=0)c[c[0]+1]=jw;
setlen(c,a[0]+10);
}
void JC(int i,int c[]){
int tmp[10005]={};
tmp[0]=1;
tmp[1]=1;
for(;i>=1;i--){
int tmp2[10005]={};
mult(tmp,i,tmp2);
numcpy(tmp2,tmp);
}
numcpy(tmp,c);
}
int main(){
int t,ans[15]={};
cin>>t;
for(int i=0;i<t;i++){
int n,a;
cin>>n>>a;
int b[10005]={};
JC(n,b);
for(int j=1;j<=b[0];j++){
if(b[j]==a)ans[i]++;
}
}
for(int i=0;i<t;i++)cout<<ans[i]<<endl;
// printf("\nPress any key to exit.");
// system("pause>nul");
return 0;
}