10分求救
查看原帖
10分求救
572956
wuhaoran2012楼主2023/8/27 18:20

不知道为什么只有1010分,,哪位大佬帮忙看看??

#include<bits/stdc++.h>
using namespace std;
const int N=110;
struct bint{
	int a[N+N],size;
	bint(int a2[],int size2){
		size=size2;
		for(int i=1;i<=size;i++) a[i]=a2[i];
	}
	bint(int x){
		size=0;
		while(x){
			a[++size]=x%10;
			x/=10;
		}
	}
	void print() const{
		if(!size) cout<<0;
		for(int i=size;i>=1;i--) printf("%d",a[i]);
	}
	bint operator*(const bint &x) const {
		bint ans;ans.size=0;memset(ans.a,0,sizeof(ans.a));
		for(int i=1;i<=size;i++){
			for(int j=1;j<=x.size;j++){
				ans.a[i+j-1]+=a[i]*x.a[j];
			}
		}
		for(int i=1;ans.a[i]!=0;i++){
			ans.a[i+1]+=ans.a[i]/10;
			ans.a[i]%=10;
			ans.size++;
		}
		return ans;
	}
	bint operator+(const bint x) const{
		bint ans;ans.size=0;memset(ans.a,0,sizeof(ans.a));
		for(int i=1;i<=max(size,x.size);i++){
			ans.a[i]=a[i]+x.a[i];
		}
		for(int i=1;ans.a[i]!=0;i++){
			ans.a[i+1]+=ans.a[i]/10;
			ans.a[i]%=10;
			ans.size=i;
		}
		return ans;
	}
	bint max(bint x,bint y) const{
		if(x.size<y.size) return y;
		if(x.size>y.size) return x;
		for(int i=1;i<=x.size;i++){
			if(x.a[i]>y.a[i]) return x;
			if(x.a[i]<y.a[i]) return y;
		}
		return x;
	}
	bint min(bint x,bint y) const{
		if(x.size<y.size) return x;
		if(x.size>y.size) return y;
		for(int i=1;i<=x.size;i++){
			if(x.a[i]>y.a[i]) return y;
			if(x.a[i]<y.a[i]) return x;
		}
		return x;
	}
	bint operator-(const bint x) const {
		int ans[N],size2=N-1;
		memset(ans,0,sizeof(ans));
		for(int i=1;i<=max(size,x.size);i++){
			if(a[i]<x.a[i]) ans[i]+=a[i]-x.a[i]+10,ans[i+1]-=1;
			else ans[i]+=a[i]-x.a[i];
		}
		while(true){
			if(ans[size2]) break;
			size2--;
		}
		return bint(ans,size2);
	}
	int max(int x,int y) const {
		if(x>y) return x;
		else return y;
	}
	bint(){
		
	}
	
};
int n,k,m;
int p[100001];
int main(){
	cin>>n>>k;
	m=n;
	for(int i=2;i*i<=m;i++){
		while(m%i==0){
			m/=i;
			p[i]++;
		}
	}
	if(m!=1) p[m]++;
	for(int i=1;i<=n;i++) p[i]*=k;
	bint a,b,ans=1;
	for(int i=2;i<=n;i++){
		a=1,b=1;
		for(int j=1;j<=p[i];j++){
			a=a*i;
			b=b+a;	
		}
		ans=ans*b;
	}
	ans.print();
	return 0;
} 

悬两关

2023/8/27 18:20
加载中...