| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 482 人关注过本帖
标题:PTA天梯赛的题目,不知道为什么部分测试点错误以及一个测试点超时运行,如何 ...
只看楼主 加入收藏
_2hanhan
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2023-9-9
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:2 
PTA天梯赛的题目,不知道为什么部分测试点错误以及一个测试点超时运行,如何修进?
--以下是题目:
一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。

输入格式:
输入在一行中给出一个正整数 N(1<N<2
31
 )。

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

输入样例:
630

输出样例:
3
5*6*7

时间限制:400ms,超时了就算不过
--以下是我的代码:
程序代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main()
{
    //如果我没理解错题目的意思的话可能是下面的例子意思
    //比如输入630,找因子可能是2*3*5*21,也可能是3*5*6*7,此时5*6*7是最长的连续因子
    //然而我下边的代码在PTA结果测试中部分报错,还有一个测试点是超时,请各位大佬帮忙看看为什么部分错误以及如何修进代码

    int vl, vll, i = 2, j = 2, maxl = 0, len = 0, end = 1;
    scanf("%d", &vl);                        //输入
    while (i < sqrt((int)vl))               //第一层循环,实现,以i为分解因子的开头(第一次从2开始)
    {                                        
        j = i;
        while (j < sqrt((int)vl))            //第二层循环,实现,因子分解并求最长值
        {
            vll = vl;                        //vll用于取出vl值来进行除以,保证原输入值不变(因为要多次寻找)
            if (vll % j == 0)
            {
                len += 1;                    //算len长
                vll = vll / j;
            }
            else
            {
                len = 0;
            }
            if (len > maxl)                    //求最大len长:maxl
            {
                maxl = len;
                end = j;                    //end用于记录最长值末尾的数字,便于后面输出最长部分
            }
            j++;
            if (vll == 1)                        //这里是为了减少运算量(但还是有一个测试点超时运算)
            {
                break;
            }

        }
        i++;
    }
    printf("%d\n", maxl);
    for (;maxl > 0;maxl--)                            //输出
    {
        if (maxl != 1)
        {
            printf("%d*", end - maxl + 1);
        }
        else
        {
            printf("%d", end);
        }
    }
    return 0;
}

目前就是说题目给的输入和输出效果实现没问题,但PTA不告诉你其他的测试点用的什么输入数据,我自己也查找不出来,请求各位大佬帮忙查看一下。
搜索更多相关主题的帖子: 测试 最长 超时 输入 输出 
2023-09-25 11:08
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9008
专家分:53957
注 册:2011-1-18
收藏
得分:10 
我输入 2,你输出 0,但正确结果应该是 2
2023-09-25 11:55
_2hanhan
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2023-9-9
收藏
得分:0 
回复 2楼 rjsp
好的,知道问题所在了,谢谢,我自己修改一下试试
2023-09-25 12:49
快速回复:PTA天梯赛的题目,不知道为什么部分测试点错误以及一个测试点超时运行 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020208 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved