zoukankan      html  css  js  c++  java
  • L1006 连续因子

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

    输入格式:

    输入在一行中给出一个正整数 N(1)。

    输出格式:

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

    输入样例:

    630
    

    输出样例:

    3
    5*6*7

    分析:

    因为12!<2^31<13!,所以最长连续因子长度不超过12。从12这个长度开始递减,如果能找到符合条件的,则一定是最长的。因子从2开始,到sqrt(n)+1结束。如果有符合条件的则输出,没有则输出自身。

    代码:
     1 #include <stdio.h>
     2 #include <iostream>
     3 #include <math.h>
     4 using namespace std;
     5 int main()
     6 {
     7     int n,f=0,i,j;
     8     cin>>n;
     9     int m=sqrt(n)+1;
    10     for(i=12;i>=1;i--)
    11     {
    12         for(j=2;j<=m;j++)
    13         {
    14             long long s=1;
    15             for(int k=j,l=0;l<i;k++,l++)
    16             s*=k;
    17             if(n%s==0)
    18             {
    19                 f=1;break;
    20             }
    21         }
    22         if(f)break;
    23     }
    24     if(f)
    25     {
    26         cout<<i<<endl;
    27         for(int k=j;k<j+i;k++)
    28         {
    29             k==j?cout<<k:cout<<'*'<<k;
    30         }
    31         cout<<endl;
    32     }
    33     else
    34     cout<<1<<endl<<n<<endl;
    35     
    36 } 



  • 相关阅读:
    单独的数字
    设计模式之原型模式
    设计模式之策略模式
    设计模式之单例模式
    泛型入门
    iOS中关于.pch的新建与配置问题
    iOS开发中遇到的头文件找不到的问题解决办法
    iOS中NSJSONSerialization的使用 小记
    6.线程、进程、协程基础篇
    5.装饰器进阶篇
  • 原文地址:https://www.cnblogs.com/xyfs99/p/10061403.html
Copyright © 2011-2022 走看看