PAT A1096 Consecutive Factors (20 分) 数学问题

该博客主要介绍了PAT A1096题目,即寻找整数N的所有连续因子中长度最长的连续因子串。博主分享了从2到sqrt(N)遍历并判断因子的解题思路,特别提到质数情况的处理和循环变量的使用技巧。文章提醒读者,题目只要求长度,不需进行因式分解。
摘要由CSDN通过智能技术生成

    题目大意:找出N的所有连续因子中,第一个长度最长的连续因子串。例如,630 = 3 * 5 * 6 * 7,应当输出5 * 6 * 7。

    总体思路是,从 2 到 sqrt(N)进行遍历,如果遍历到 N 的因子,那么将它作为起点,持续向后累加,直到不是N的因子为止,记录这个因子串的长度,如果是最大的,那么就更新最长因子串的起点记录。

    坑点是如果是质数,应当输出它本身。而sqrt(N)是遍历不到的,只有通过记录的最大因子串长度为0来判断这一点。

    另外需要注意的是在循环里找连续因子的时候,不能直接使用循环变量i,另外设置一个变量作为因子。

    思路看起来比较简单,但对我来说还是一时想不到。这个问题只要求找到最大连续因子串的长度,并不要求做因式分解,不需要想的太复杂。

AC代码:

#include <cstdio>
#include <cmath>

using namespace std;

int main()
{
    int N;
    scanf("%d", &N);
    int maxSize = 0, start = 0;
    for (int i = 2; i <= sqrt(N); ++i)
    {
        int num = N;
        int cnt = 0;
        int factor = i;
        if(num % factor == 0)
        {
            while(num % factor == 0)
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值