每日一练2023.11.27———连续因子【PTA】

题目要求:

一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。

输入格式:

输入在一行中给出一个正整数 N(1<N<231)。

输出格式:

首先在第 1 行输出最长连续因子的个数;然后在第 2 行中按 因子1*因子2*......*因子k 的格式输出最小的连续因子序列,其中因子按递增顺序输出,1 不算在内。

输入样例:

复制代码
630

输出样例:

复制代码
3
5*6*7

思路:

1.根据以下代码,先将输入n的因子放到一个数组里面

cpp 复制代码
for(int i = 2; i < sqrt(n) + 1; i ++)
{
     if(n % i == 0)
         a[q ++] = i;
}
if(q == 0)
     a[q ++] = n;

2.q代表n的因子的个数,遍历这些因子看是否满足相邻

3.判断因子之间是否相差1,即相邻,如果是则继续进行判断,如果不是跳出循环,从第二个因子后面进行判断

4.如果满足相邻,将相邻数*到一起放到sum里面

5.如果sum是n的因子则进行t++来统计连续因子个数,与max进行比较,更新max,并且记录第一个因子的位置i,如果sum不是n的因子则跳出循环

6.按输出要求进行输出

代码:

cpp 复制代码
#include <bits/stdc++.h>

using namespace std;

#define N 10000

int main()
{
    int n;
    int q = 0;
    int a[N];
    cin >> n;
    for(int i = 2; i < sqrt(n) + 1; i ++)
    {
        if(n % i == 0)
            a[q ++] = i;
    }
    if(q == 0)
        a[q ++] = n;
    int max = 1;
    int sum;
    int t;
    int y = 0;
    for(int i = 0; i < q; i ++)
    {
        sum = a[i];
        t = 1;
        for(int j = i + 1; j < q; j ++)
        {
            if(a[j] == a[j - 1] + 1)
            {
                sum *= a[j];
                if(n % sum == 0)
                {
                    t ++;
                    if(t > max)
                    {
                        max = t;
                        y = i;
                    }
                }
                else 
                    break;
            }
            else
                break;
        }
    }
    cout << max << endl;
    for(int k = y; k < y + max; k ++)
       if(k != max + y - 1)
             cout << a[k] << "*";
         else
             cout << a[k] << endl;
    return 0;
}

测试结果:

相关推荐
Brookty1 小时前
【数据结构】Map与Set结构详解
数据结构
WaitWaitWait014 小时前
LeetCode每日一题4.20
算法·leetcode
蒟蒻小袁4 小时前
力扣面试150题--有效的括号和简化路径
算法·leetcode·面试
ptu小鹏5 小时前
类和对象(中)
开发语言·c++
跳跳糖炒酸奶5 小时前
第十五讲、Isaaclab中在机器人上添加传感器
人工智能·python·算法·ubuntu·机器人
明月看潮生7 小时前
青少年编程与数学 02-018 C++数据结构与算法 06课题、树
数据结构·c++·算法·青少年编程·编程与数学
小指纹7 小时前
动态规划(一)【背包】
c++·算法·动态规划
_安晓7 小时前
数据结构 -- 图的应用(一)
数据结构·算法·图论
阳洞洞7 小时前
leetcode 二分查找应用
算法·leetcode·二分查找
猎猎长风7 小时前
【数据结构和算法】1. 数据结构和算法简介、二分搜索
数据结构·算法