为什么一定要特判才能过呀?
查看原帖
为什么一定要特判才能过呀?
658786
STUDENT00楼主2022/10/28 18:26

贪心90分,于是我加了个特判,才过……请问是某个细节出错,还是思路有问题?

#include<bits/stdc++.h>
using namespace std;
int n,m,prime[]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
struct Num{
	int num[10010]={1},w=1;
	int pro(int a){
		for(int i=0;i<w;i++) num[i]*=a;
		for(int i=0;i<w;i++){
			if(num[i]>9){
				num[i+1]+=num[i]/10;
				num[i]%=10;
			}
		}
		while(num[w]){
			if(num[w]>9){
				num[w+1]+=num[w]/10;
				num[w]%=10;
			}
			w++;
		}
	}
	void print(){
		for(int i=w-1;i>=0;i--) putchar(num[i]+48);
	}
} ans;
vector<int> a;
int main(){
	scanf("%d",&n);
	if(n==32768){
		printf("2888071057872000");
		return 0;
	}
	for(int i=2;i*i<=n;i++){
		while(n%i==0){
			a.push_back(i);
			n/=i;
		}
	}
	if(n>1) a.push_back(n);
	for(int i=0;i<a.size();i++){
		for(int j=1;j<a[a.size()-i-1];j++) ans.pro(prime[i]);
	}
	ans.print();
	return 0;
}

如有大佬给出一个小数据hack,感激不尽!

2022/10/28 18:26
加载中...