天梯赛:L1-006 连续因子 (20分)

天梯赛:L1-006 连续因子 (20分)

算法分析以下:

这题咱们能够看到,须要求连续的因子,而且n不超过2^31,这就说明这个n是一个int类型的整数。咱们知道,12!就超过int了,因而这个连续因子涉及的范围应该比较小!ios

因而咱们就只枚举小区间[2, 50],而后须要注意的坑点就是:
1、不光该因子是n的因子,乘积也要是n的因子
2、若是是质数,可能就不存在其余的因子,直接输出1和它自己便可。算法

AC代码以下:

#include <iostream>
using namespace std;

int main()
{
	int n, cur = 0, len = 0, l = 0, r = 0, mul = 1, book = 0;
	cin >> n;
	for (int i = 2, j; i <= 50; ++i)
	{
		for (j = i; j <= 50; ++j)
		{
			if (n % (mul * j) == 0)
				cur++, mul *= j, book = 1;
			else
				break;
		}
		if (cur > len)
		{
			len = cur;
			l = i, r = j - 1;
		}
		cur = 0, mul = 1;
	}
    if(!book)
    {
        cout << 1 << endl << n;
        return 0;
    }
	cout << r - l + 1 << endl;
	for (int i = l; i <= r; ++i)
	{
		if (i != r)
			cout << i << '*';
		else
			cout << i;
	}
	return 0;
}
相关文章
相关标签/搜索