求助,10pts AC#1 悬关
查看原帖
求助,10pts AC#1 悬关
892979
liuenyin楼主2023/9/5 21:21

rt. 试了好多种写法了,不是RE就WA

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=105;
const int M=1000;
struct bigint{
	int num[151];
	int len;
	bigint(){
		memset(num,0,sizeof num);
		len=0;
	}
	void print(){
		for(int i=len;i>=0;i--)cout<<num[i];
	}
	bigint operator+(bigint A){
		bigint ret;
		ret.len=max(A.len,len);
		for(int i=0;i<=ret.len;i++){
			ret.num[i]=num[i]+A.num[i];
			if(ret.num[i]>=10){
				ret.num[i+1]=ret.num[i]/10;
				ret.num[i]%=10;
			}
		}
		if(ret.num[ret.len])ret.len++;
		while(ret.len and !ret.num[ret.len])ret.len--;
		return ret;
	}
};

int qpow(int x,int k){
	int t=x,ans=1;
	while(k){
		if(k&1)ans=(ans*t)%M;
		k>>=1;
		t=(t*t)%M;
	}
	return ans;
}

int k,x;
bigint c[101][1001];
int main(){
	cin>>k>>x;
	x%=1000;
	int lans=qpow(x,x);
	c[1][0].num[0]=1;
	for(int i=1;i<=k;i++){
		for(int j=i;j<=lans;j++){
			c[i][j]=c[i][j-1]+c[i-1][j-1];
		}
	}
	c[k][lans].print();
	return 0;
}
2023/9/5 21:21
加载中...