PAT(A)1096 Consecutive Factors (20 分)
程序员文章站
2022-06-07 11:43:40
...
Sample Input:
630
Sample Output:
3
5*6*7
思路: 找出最长连续的因子,注意循环到sqrt(n)即可,就像判断素数,然后每次找到因子就判断后面是不是连续,然后计数,记录开始位置,最后得到最大的连续个数,及开始位置,输出即可。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
typedef long long ll;
int main()
{
ll n;
scanf("%lld", &n);
ll a = (ll)sqrt(n * 1.0);
ll len = -1, first = 0;
for (ll i = 2; i <= a; ++i)
{
ll t = 1;
ll j = i;
while (1)
{
t *= j;
if (n % t != 0)
break;
if (j - i + 1 > len)
{
len = j - i + 1;
first = i;
}
j++;
}
}
if (len == -1)
{
printf("1\n");
printf("%lld", n);
return 0;
}
//int ans = first;
printf("%lld\n", len);
printf("%lld", first);
for (ll i = 1; i < len; ++i)
{
printf("*%lld", first + i);
}
return 0;
}
推荐阅读
-
【PAT】B1074 宇宙无敌加法器(20 分)
-
PAT_B_1049_C++(20分)
-
【PAT】A1069 The Black Hole of Numbers (20分)
-
PAT(A)1069 The Black Hole of Numbers (20分)
-
pat-1069 The Black Hole of Numbers (20分)
-
PAT (Basic Level) Practice (中文)1009 说反话 (20 分)
-
PAT (Basic Level) Practice 1009 说反话 (20 分)
-
PAT1037 在霍格沃茨找零钱 (20 分)(C语言)
-
PAT1037 在霍格沃茨找零钱 (20 分)
-
PAT (Advanced Level) 1015 Reversible Primes (20 分)