每日一练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;
}

测试结果:

相关推荐
杜小暑3 分钟前
动态内存管理
c语言·开发语言·动态内存管理
YuforiaCode20 分钟前
第十二届蓝桥杯 2021 C/C++组 直线
c语言·c++·蓝桥杯
知来者逆39 分钟前
计算机视觉——速度与精度的完美结合的实时目标检测算法RF-DETR详解
图像处理·人工智能·深度学习·算法·目标检测·计算机视觉·rf-detr
阿让啊43 分钟前
C语言中操作字节的某一位
c语言·开发语言·数据结构·单片机·算法
এ᭄画画的北北44 分钟前
力扣-160.相交链表
算法·leetcode·链表
拾忆-eleven1 小时前
C语言实战:用Pygame打造高难度水果消消乐游戏
c语言·python·pygame
草莓啵啵~1 小时前
搜索二叉树-key的搜索模型
数据结构·c++
共享家95271 小时前
深入理解C++ 中的list容器
c++
孞㐑¥1 小时前
C++11介绍
开发语言·c++·经验分享·笔记
云小逸1 小时前
【QQMusic项目界面开发复习笔记】第二章
c++·qt