83pts求调
查看原帖
83pts求调
1002517
Adorable_楼主2024/9/22 12:33

#3wa了

#include<bits/stdc++.h>
using namespace std;

#define int long long
const int N = 5e5+5,Max = 5e5,mod = (int)pow(2,31);
int f[100] = {1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040,1346269,2178309,3524578,5702887,9227465,14930352,24157817,39088169,63245986,102334155,165580141,267914296,433494437,701408733,1134903170,1836311903,823731425,512559680,1336291105,1848850785,1037658242,739025379,1776683621,368225352,2144908973,365650677,363076002,728726679,1091802681,1820529360};
bool p[N];

void prime()//埃氏筛,1代表合数,0代表质数 
{
	p[0] = p[1] = 1;
	for(int i = 2;i*i<=Max;i++)
	{
		if(!p[i])
		{
			for(int j = 2;i*j<=Max;j++)
			{
				p[i*j] = 1;
			}
		}
	}
}


signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	int n;
	cin>>n;
	n = f[n-1]%mod;
	prime();
	cout<<n<<'=';
	bool b = 0;
	for(int i = 2;i<=Max;i++)
	{
		if(!p[i])
		{
			while(true)
			{
				if(n%i!=0) break;
				if(b) cout<<'*';
				else b = 1;
				cout<<i;
//				cout<<"n:"<<n<<endl;
				n/=i;
			}
		}
		if(!n) break;
	}
	cout<<endl;
	return 0;
}
//	打表 
//	f[1] = 1,f[2] = 1;
//	for(int i = 3;i<=60;i++) f[i] = (f[i-1]+f[i-2])%mod;
//	for(int i = 1;i<=60;i++) cout<<f[i]<<',';

2024/9/22 12:33
加载中...