求助
查看原帖
求助
1209037
ProgrammingCat楼主2024/6/22 11:56
#include<bits/stdc++.h>
using namespace std;
const long long MODS=2147483648;
long long k,ans,be;
long long a[1145];
long long f(long long x){
	if(x<=2) return 1;
	if(a[x]==0) a[x]=f(x-1)+f(x-2);
	return a[x];
}
vector<long long> answers;
int as;
int main(){
	answers.push_back(0);
	cin>>k;
	ans=f(k);
	ans%=MODS;
	cout<<ans<<'=';
	long long t=sqrt(ans);
	be=ans;
	for(int i=2;i<=t;i++){
		if(ans%i==0){
			while(ans%i==0){
				answers.push_back(t);
				ans/=t;
				as++;
			}
		}
	}
	if(as==0){
		printf("%lld",ans);
		return 0;
	}
	for(int i=1;i<as;i++){
		printf("%lld*",answers[i]);
	}
	printf("%lld",answers[as]);
	if(ans==be) printf("*%lld",ans);
	return 0;
}

样例都能过,自己的数据(47)也过不了

2024/6/22 11:56
加载中...