求助,0分
查看原帖
求助,0分
952033
lutaoquan2012楼主2023/5/7 11:11
#include<bits/stdc++.h>
using namespace std;
//typedef long long ll;
struct Big{
	int len,a[110];
	Big(int x=0){
		memset(a,0,sizeof(a));
		for(len=1;x;len++) a[len]=x%10,x/=10;
		len--;
	}
	int &operator[](int i) {
		return a[i];
	}
	void flatten(int L){
		len=L;
		for(int i=1;i<=len;i++) a[i+1]+=a[i]/10,a[i]%=10;
		while(a[len]==0) len--;
	}
	void print(int xx){
		int nn=0;
		if(1>len) len=1;
		for(int i=len;i>=1;i--){
			if(a[i]==xx) nn++;
		}
		cout<<nn<<endl;
		//for(int i=len;i>=1;i--) cout<<a[i];
		//cout<<endl;
	}
};
Big operator+(Big a,Big b){
	Big c;
	int len=max(a.len,b.len);
	for(int i=1;i<=len;i++) c[i]+=a[i]+b[i];
	c.flatten(len+1);
	return c;
}
Big operator*(Big a,int b){
	Big c;
	int len=a.len;
	for(int i=1;i<=len;i++) c[i]=a[i]*b;
	c.flatten(len+11);
	return c;
}
int main(){
	int n,m,x,f,l,cnt=0;
	cin>>m;
	while(m--){
		cin>>n>>x;
		Big factor(1);
		for(int i=1;i<=n;i++){
			factor=factor*i;
			//ans=ans+factor;	
		}
		factor.print(x);
	}
	return 0;
}
2023/5/7 11:11
加载中...