求助大佬啊!为什么才70分!
查看原帖
求助大佬啊!为什么才70分!
381120
易建全楼主2021/3/26 13:55
#include<bits/stdc++.h>
using namespace std;
const int N=4E4; 

struct node{
	int a[N];
	int len;
	node(){memset(a,0,sizeof(a));}
	node(int n){
		memset(a,0,sizeof(a));len=0;
		while(n){//32580
			a[len++]=n%10,n/=10;
		}
	}
	void print(){
		for(int i=len-1;i>=0;i--) cout<<a[i];
		cout<<endl;
	}
	void re(){ reverse(a,a+len);}//反转数组 
	void add(int x){
		if(a[0]==0) len--;
		a[len++]=x;
	}
	void hh(int x){
		int sum=0;
		for(int i=len-1;i>0;i--){
			if(a[i]==x) sum++;
		}
	    cout<<sum<<endl;
	}
};
node operator + (const node x,const node y){
	node c;c.len=max(x.len,y.len);
	for(int i=0;i<c.len;i++){
		c.a[i]+=x.a[i]+y.a[i];
		c.a[i+1]+=c.a[i]/10;
		c.a[i]%=10;
	}
	if(c.a[c.len]!=0) c.len++;
	return c;
}
node operator * (const node x,const node y){
	node c;c.len=x.len+y.len;
	for(int i=0;i<x.len;i++){
		for(int j=0;j<y.len;j++){
			c.a[i+j]+=x.a[i]*y.a[j];
			c.a[i+j+1]+=c.a[i+j]/10;
			c.a[i+j]%=10;
		}
	}
	while(c.a[c.len-1]==0&&c.len>1) c.len--;
	return c;
}
int main(){
	int n;cin>>n;
	for(int i=1;i<=n;i++){
		node ans=node(1);
		int m,x;
		cin>>m>>x;
    	for(int j=2;j<=m;j++){
    		node t=node(j);
    		ans=ans*t;
		}
    	ans.hh(x);
	}
	
	return 0;
}
2021/3/26 13:55
加载中...