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. Android中如何使用命令行查看内嵌数据库SQLite3

    转载博客:http://www.linuxidc.com/Linux/2011-06/37135.htm 在上图中,除了最后一个红色的方框,其它方框都是adb shell下的命令. [1]在Andro ...

  2. 聊聊excel生成图片的几种方式

    目录     I:需求.  II:实现思路.     III:实现方式.     IV:优缺点分析.     V:结论.     VI:wps安装与配置. 正文 1.需求:把excel生成等比的图片. ...

  3. ASP.NET Core 中文文档 第三章 原理(14)服务器

    原文:Servers 作者:Steve Smith 翻译:谢炀(Kiler) 校对:许登洋(Seay).姚阿勇(Dr.Yao) ASP.NET Core 已完全从承载应用程序的 Web 服务器环境中分 ...

  4. Java进击C#——语法之线程同步

    上一章我们讲到关于C#线程方向的应用.但是笔者并没有讲到多线程中的另一个知识点--同步.多线程的应用开发都有可能发生脏数据.同步的功能或多或少都会用到.本章就要来讲一下关于线程同步的问题.根据笔者这几 ...

  5. JavaWeb_day05cookie_session_HttpSession

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 两个会话的技术cookie session 会话概念 ...

  6. c++ builder TIdHttp 获取不到cookie

    用c++ builder 的TIdHttp组件Get一个ASP.Net MVC服务器的一个页面,获取页面中Cookie信息,修改后Post到服务器上去. 在本地调试的时候可以获取到,部署到服务器上就获 ...

  7. macOS 升级到了10.12.1

    除了明面上的一些更新,但我感觉最重要的是触摸板的行为特征又还原了.

  8. 流程控制和循环.png

  9. Android 手机卫士3--设置中心

    1.要点击九宫格中的条目,需要注册点击事件 // 注册九宫格单个条目的点击事件 gv_home.setOnItemClickListener(new OnItemClickListener() { / ...

  10. [deviceone开发]-Star分享的几个示例

    一.简介 这个是star早期分享的几个示例,都非常实用,包括弹出的菜单,模拟支付密码输入等.初学者推荐.也可以直接使用.二.效果图 三.相关下载 https://github.com/do-proje ...