天梯賽: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;
}
相關文章
相關標籤/搜索