当前位置:网站首页>团体程序设计天梯赛-练习集 L1-006 连续因子

团体程序设计天梯赛-练习集 L1-006 连续因子

2022-07-04 07:53:00 Cod_ing

题目链接

特点:稍微改进了这位同志的代码

#include<iostream>
#include<vector>
#include<cmath>
typedef long long ll;
using namespace std;
int main() {
    
	int n;
	vector<int> ans;
	vector<int> temp_;
	cin >> n;
	int lim = sqrt(n);		//输入数的因子不会超过它的根
	for (int i = 2; i <= lim; i++) {
    
		ll temp = 1;
		for (int j = 0; j < 12; j++) {
    			//13的阶乘超过了int的最大值(2^31),因此长度最大不会超过12
			temp *= (i + j);
			if (temp > n)
				break;
			if (n % temp == 0) {
    
				temp_.push_back(i + j);
			}
			else
				break;
		}
		if (temp_.size() > ans.size()) {
    
			ans.assign(temp_.begin(), temp_.end());
		}
		temp_.clear();
	}
	if (ans.empty()) {
    	//特殊判断防止造成段超越
		cout << 1 << endl << n;
		return 0;
	}
	cout << ans.size() << endl;
	if (ans.size() == 1)
		cout << ans[0];
	else {
    
		for (int i = 0; i < ans.size() - 1; i++)
			cout << ans[i] << "*";
		cout << ans[ans.size() - 1];
	}
	return 0;
}
原网站

版权声明
本文为[Cod_ing]所创,转载请带上原文链接,感谢
https://blog.csdn.net/keepkind/article/details/125529071