n = 48时WA
查看原帖
n = 48时WA
91975
GVNDN楼主2020/6/23 22:57

分解质因数没问题,但是第48项算错了(应该是512559680, 但我算出来是4807526976),为啥会这样(其他点都过了)。unsigned long long 应该够的啊。。。

#include<iostream>
using namespace std;
typedef long long ll;

ll f1 = 1, f2 = 1, f3;
int f = 1;

int is_prime(ll n){
	if(n == 1) return 0;
	for(int i = 2; i * i <= n; i++)
		if(n % i == 0) return 0;
	return 1;
}

void fenjie(ll n){
//	cout << "n = " << n << endl;
	if(n == 1) return;
	
	if(f) f = 0;
	else cout << "*";
	
	if(is_prime(n)){
		cout << n;
		return;
	}
	else{
		int i = 2;
		while(n % i != 0) i++;
		cout << i;
		fenjie(n / i);
	}
}

int main(){
	int n;
	cin >> n;
	for(int i = 3; i <= n; i++){
		f3 = f1 + f2;
		f1 = f2;
		f2 = f3;
	}
	cout << f3 << "=";
	fenjie(f3);
	return 0;
}
2020/6/23 22:57
加载中...