https://www.patest.cn/contests/gplt/L1-006

题目地址 在上面

一个正整数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
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard

/*************************************************************************/
送你几组测试样例:
2
101
2323
720
/*************************************************************************/
这题目真心不错。 我的做法主要是 前序和的思想 + 判断素数
1. 如果 n 是素数这答案一定是 1 和 n
2. 用一个数组把 1!, 2!, 3!, 4!, ... 存起来。 然后二重循环遍历求 起始点 和 终止点。
3. 特殊的处理, 如果经过二重循环扫了一遍后( 1< n < 2^31,就是整型范围内。  20! 是接近 long long 极限的一个值, 所以我只记到了 20!), len还是 0,就说明 len 一定是 1。 假设 len > 1,  不妨令  len == 2,  就有 一奇一偶 ,偶数一定有 2 这个因子,那么 len 就不该是 0. n == 2323 == 23 * 101 (两个大于 19 的素数)
/**********************************************************************************/
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;
typedef long long int ll;
#define maxn 21

ll ans[maxn], len, s, e, temp;
int n;
void init(){
    ans[0] = ans[1] = 1;
    for(int i=2; i<maxn; ++i)
        ans[i] = ans[i-1] * i;
    return ;
}
bool prime(int x){
    if(x==2 || x==3 || x==5 || x==7)
        return true;
    if(x%2 == 0 || x==1)
        return false;
    int boun = (int)sqrt(x);
    for(int i=3; i<=boun; i+=2){
        if(x % i ==0)
            return false;
    }
    return true;
}

int main(){
        
    init();                                                               // 打表
    scanf("%d", &n);
    
    if(!prime(n))                                                      // 扫描
    for(int i=2; i<maxn; ++i){
        for(int j=i; j<maxn; ++j){
            temp = ans[j] / ans[i] * i;
            
            if(temp > n)
            break;
        
            if(n % temp == 0 && j-i+1 > len){
                
                    len = j-i+1;
                    s = i;
                    e = j;
            }    
        }
    }
    else{                                                              // 素数的情况
        len = 1;
        s = n;
        e = n;
    }
    
                                                                          //特殊处理
    if(len == 0){
        for(int i=21; i<n; ++i){
            if(prime(i) && n%i == 0){
                len = 1;
                s = i;
                e = i;
                break;
            }
        }
    }

cout << len << endl;
    for(int i=s; i<=e; ++i){
        cout << i;
        if(i!=e)
        cout << "*";
    }    
    cout << endl;
    
    
    return 0;
}

L1-006. 连续因子的更多相关文章

  1. pat L1-006. 连续因子

    L1-006. 连续因子 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一个正整数N的因子中可能存在若干连续的数字.例如630 ...

  2. L1-006 连续因子 (20 分) 模拟

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

  3. L1-006 连续因子(20)(思路+测试点分析)

    L1-006 连续因子(20 分) 一个正整数 N 的因子中可能存在若干连续的数字.例如 630 可以分解为 3×5×6×7,其中 5.6.7 就是 3 个连续的数字.给定任一正整数 N,要求编写程序 ...

  4. 天梯赛 L1-006 连续因子 (模拟)

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

  5. PAT 天梯赛 L1-006. 连续因子 【循环】

    题目链接 https://www.patest.cn/contests/gplt/L1-006 思路 输出的连续因子 的乘积 也要是这个数的因子 就每个数先找它的单因子 然后每个单因子往上一个一个遍历 ...

  6. 团体程序设计天梯赛-练习集L1-006. *连续因子

    L1-006. 连续因子 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一个正整数N的因子中可能存在若干连续的数字.例如630 ...

  7. PAT 天梯赛练习集 L1-006. 连续因子

    题目链接:https://www.patest.cn/contests/gplt/L1-006 一个正整数N的因子中可能存在若干连续的数字.例如630可以分解为3*5*6*7,其中5.6.7就是3个连 ...

  8. PTA --- L1-006 连续因子

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

  9. L1-006 连续因子 (20分)

    题意分析 题目中已经将意思说的很清楚了,就是输出一个数的最长连续因子的个数,并且输出是哪几个因子相乘.可以将题目从这两个角度进行分析: N为素数时,最长连续因子的个数为1,即它自己. N不为素数时,即 ...

随机推荐

  1. Microsoft Build 2016 Day 1 记录

    去年今日:Microsoft Build 2015 汇总 今年的 Bulid 时间是 3.30-4.1,第一天的主角主要是 Windows 10.人工智能.HoloLens.小娜等,详细介绍:3 分钟 ...

  2. Spark的DataFrame的窗口函数使用

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 SparkSQL这块儿从1.4开始支持了很多的窗口分析函数,像row_number这些,平时写程 ...

  3. 代码的坏味道(5)——数据泥团(Data Clumps)

    坏味道--数据泥团(Data Clumps) 特征 有时,代码的不同部分包含相同的变量组(例如用于连接到数据库的参数).这些绑在一起出现的数据应该拥有自己的对象. 问题原因 通常,数据泥团的出现时因为 ...

  4. LinqToDB 源码分析——处理表达式树

    处理表达式树可以说是所有要实现Linq To SQL的重点,同时他也是难点.笔者看完作者在LinqToDB框架里面对于这一部分的设计之后,心里有一点不知所然.由于很多代码没有文字注解.所以笔者只能接合 ...

  5. "bower.json 中出现语法错误" 的解决方案之一

    当你用 Visual Studio 2015 Update 3 打开从别处下载的开源项目的时候,如果发现 Bower 提示 "bower.json 中出现语法错误". 请检查一下. ...

  6. Razor语法中绑定一个值给checkbox

    在ASP.NET MVC开发中,需要绑定一个值给checkbox标签,如下面写法,它们运行时是没有问题,照样能跑. 看看上面的语法,在绑定时,它却出现绿浪线.提不绑定的值is not a valid ...

  7. Aspose.Cells导出Excel(1)

    利用Aspose.Cells导出excel 注意的问题 1.DataTable的处理 2.进行编码,便于中文名文件下载 3.别忘了Aspose.Cells.dll(可以自己在网上搜索) public ...

  8. 【无私分享:ASP.NET CORE 项目实战(第十四章)】图形验证码的实现

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 很长时间没有来更新博客了,一是,最近有些忙,二是,Core也是一直在摸索中,其实已经完成了一个框架了,并且正在准备在生产环境中 ...

  9. IO模型

    前言 说到IO模型,都会牵扯到同步.异步.阻塞.非阻塞这几个词.从词的表面上看,很多人都觉得很容易理解.但是细细一想,却总会发现有点摸不着头脑.自己也曾被这几个词弄的迷迷糊糊的,每次看相关资料弄明白了 ...

  10. 工业物联网或系统集成中应用消息队列(ActiveMQ,C#的demo)的场景全面分析

    1.[连载]<C#通讯(串口和网络)框架的设计与实现> 2.[开源]C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 2.应用SuperIO(SIO)和开源跨平台物联网框 ...