PTAL1-1006

版权声明:本文由作者原创,如需使用请联系作者,侵权必究 https://blog.csdn.net/Elliot_Alderson/article/details/88844488

       本身这道题其实不是什么难题,不过想起来带我的学长说过的一句话“在做题之前,把题目背下来都不为过。”,题目总结也就是两点,一点是你找出的序列必须可以连续相乘且被给出数字整除,然后质数状态忽略1即可,这里给出过了的代码。

#include<stdio.h>
#include<math.h>
int main()
{
	int start, len;
	start = len = 0;
	int n;
	scanf("%d", &n);
	for (int i = 2; i <= (int)sqrt(n); i++)
	{
		long long int prd = 1;
		for (int j = i; j * prd <= n; j++)
		{
			prd *= j;
			if (n % prd == 0 && j - i + 1 > len)
			{
				start = i;
				len = j - i + 1;
			}
		}
	}
	if (start)
	{
		printf("%d\n", len);
		for (int i = 0; i < len; i++)
		{
			printf(i == len - 1 ? "%d\n" : "%d*", i + start);
		}
	}
	else
	{
		printf("1\n%d\n",n);
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/Elliot_Alderson/article/details/88844488