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. Kafka 文档用例

    1.2 用例 以下是一些Kafka 常见的用例.关于功能方面的一些概念,可以看这篇博客:http://engineering.linkedin.com/distributed-systems/log- ...

  2. 别语言之争了,最牛逼的语言不是.NET,也不是JAVA!

    谁都不用说,博客园明显的偏.NET,C#的讨论一出现,推荐讨论热火朝天,而发点JAVA的东西,应者寥寥.一旦有出现两大派系的竞争,那绝对是头条.每天都看,早就麻木了. 研二的我浸淫.NET已经三四年, ...

  3. .NET Core 使用Dapper 操作MySQL

    MySQL官方驱动:http://www.cnblogs.com/linezero/p/5806814.html .NET Core 使用Dapper 操作MySQL 数据库, .NET Core 使 ...

  4. Handler系列之内存泄漏

    本篇简单的讲一下平常使用Handler时造成内存泄漏的问题. 什么是内存泄漏?大白话讲就是分配出去的内存,回收不回来.严重会导致内存不足OOM.下面来看一下造成内存泄漏的代码: public clas ...

  5. Oracle AWR报告提取方法

    本文旨在用来指导项目人员自行提取Oracle数据库的AWR报告. 1.当前连接实例的AWR报告提取:@?/rdbms/admin/awrrpt 2.RAC的其他实例AWR报告提取:@?/rdbms/a ...

  6. 抽象类 VS 接口

    引言 接口和抽象类是面向对象编程(OOP, Object Oriented programming)中两个绕不开的概念,二者相似而又有所不同.接下来,我们来了解二者的概念并比较它们的异同. 什么是抽象 ...

  7. 实现跨浏览器html5表单验证

    div:nth-of-type(odd){ float: left; clear: left; } .origin-effect > div:nth-of-type(even){ float: ...

  8. Asp.Net Core 项目实战之权限管理系统(7) 组织机构、角色、用户权限

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  9. PreEmptive Dotfuscator and Analytics CE

    PreEmptive Dotfuscator and Analytics CE Dotfuscator 是领先的 .NET 模糊处理程序和压缩程序,有助于防止程序遭到反向工程,同时使程序更小更高效.D ...

  10. Go语言开发

    Go语言圣经(中文版)     Go编程语言规范 搭建Go开发及调试环境(LiteIDE + GoClipse) -- Windows篇           Go开发工具 Go命令行操作命令详细介绍 ...