chris731 @ 2023-12-28 22:22:27
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int c[4005005];
int o[4005005];
int main(){
ios::sync_with_stdio(0);
//freopen("xxx.in", "r", stdin);
//freopen("xxx.out", "w", stdout);
int q;
cin>>q;
while(q--){
memset(c,0,sizeof(c));
int n,t;
ll ans=0;
cin>>n>>t;
c[1]=1;
int m=1,k=1;
for(int i=2;i<=n;i++){
int x=0;
for(int j=1;j<=k;j++){
c[j]*=i;
c[j]+=x;
x=0;
if(c[j]>9){
if(j==k){
m++;
}
x=c[j]/10;
c[j]%=10;
}
}
if(x>0){
c[m]=x;
x=0;
}
k=m;
if(c[m]>9){
m++;
c[m+1]=c[m]/10;
c[m]%=10;
}
/*for(int i=m;i>=1;i--){
cout<<c[i];
}
cout<<endl;*/
}
while(c[m]==0&&m!=1){
m--;
}
for(int i=m;i>=1;i--){
cout<<c[i];
}
cout<<endl;
for(int i=m;i>=1;i--){
if(c[i]==t){
ans++;
//cout<<c[i]<<" "<<i;
}
}
cout<<ans<<endl;
}
return 0;
}
by _buzhidao_ @ 2023-12-28 22:42:26
@chris731
#include<bits/stdc++.h>
using namespace std;
const int _long=10030;//10^_long
void input(int x[]){
string s;cin>>s;
memset(x,0,sizeof(x));
x[0]=s.size();//数组格式:长度+内容
for(int i=0;i<x[0];i++){
x[x[0]-i]=s[i]-48;//惨痛的教训
}
}
void print(int x[]){
for(int i=x[0];i>0;i--) cout<<x[i];
cout<<endl;
}
void mem_set(int x[]){
for(int i=0;i<=_long;i++) x[i]=0;//不严谨
}
void cheng(int x[],int y[],int z[]){
mem_set(z);
z[0]=x[0]+y[0];int k;
for(int i=1;i<=x[0];i++){
k=0;
for(int j=1;j<=y[0];j++){
z[i+j-1]+=x[i]*y[j]+k;
k=z[i+j-1]/10;
z[i+j-1]%=10;
}
z[i+y[0]]+=k;
}
while(z[z[0]]==0&&z[0]>1) z[0]--;
}
void str_int(int x,int y[]){
int z=x,cnt=0;
y[0]=cnt;
while(z!=0){
y[cnt+1]=z%10;
z/=10;cnt++;
}
y[0]=cnt;
//print(y);
}
int main(){
int a[_long+1],b[_long+1],c[2*_long+1];
int n,s,l,cnt;
cin>>n;
for(int i=0;i<n;i++){
cin>>s>>l;
mem_set(a);
a[0]=1;a[1]=1;
cnt=0;
for(int j=1;j<=s;j++){
str_int(j,b);
cheng(a,b,c);
for(int k=0;k<=c[0];k++){
a[k]=c[k];
}
}
for(int i=1;i<=c[0];i++){
if(c[i]==l) cnt++;
}
cout<<cnt<<endl;
}
return 0;
}