题意:一个正整数n可以分解成一系列因子的乘积,其中会存在连续的因子相乘,如630=3*5*6*7,5*6*7即为连续的因子。给定n,让你求最大的连续因子个数,并且输出其中最小的连续序列。

比如一个数可以分解2*3*4*6*7*8,最大的连续个数为3,因为存在两个,输出最小的那个即2*3*4。

首先,一个数如果是合数,那么它的因子必定不会超过sqrt(n)或者sqrt(n)+1。如果为质数,那么只可能为自己,因为题目说了不包括1。

我们先将2~sqrt(n)+1中为n的因子存到factor数组中,然后枚举以每个factor[i]开始的情况,看与后面的是否连续,每连续一个,都要判断乘积是否为n的约数,如果是并且大于目前最大的长度,即更新。连续中断,则从下一个factor[i+1]开始。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string.h>
#include <cmath>
using namespace std;
const int maxn=<<;
int n;
int cnt;
int factor[maxn];
/*
初始化n所有可能的因子
如果n不为质数,那么n最大的因子<=sqrt(n)+1
*/
void init(int n){
cnt=;
int k=sqrt(n+0.5);
//这里要注意是k+1,比如20=4*5
for(int i=;i<=k+;i++){
if(n%i==){
factor[cnt++]=i;
}
}
}
int main()
{
//printf("%d\n",(1<<31)-1);
scanf("%d",&n);
init(n);
int maximum=;
int l,r,q;
/*
枚举以每个factor[i]开始的情况
q为连续的个数
*/
for(int i=;i<cnt;i++){
q=;
int sum=;
while(factor[i+q]==factor[i]+q && sum*factor[i+q]<=n){
sum*=factor[i+q];
q++;
if(n%sum== && q>maximum){
l=i;
r=i+q-;
maximum=q;
} } }
if(cnt>){
printf("%d\n",maximum);
printf("%d",factor[l]);
for(int i=l+;i<=r;i++)
printf("*%d",factor[i]);
}
//若n为质数
else{
printf("1\n");
printf("%d",n);
}
return ;
}

最新文章

  1. C# DateTime.ToString的坑
  2. hdu5092 dp(递推)
  3. Redis_jedis高版本的JedisPoolConfig没有maxActive和maxWait
  4. CSS3 中的 rem 值与 px 之间的换算
  5. ubuntu学习之一
  6. Java数据结构之排序
  7. Linux man 后面的数字含义及作用
  8. html基础标签-2-textarea文本域
  9. .NET应用架构设计—再次了解分层架构(现代企业应用分层架构核心设计元素)
  10. iOS开发之UIPickerView
  11. 用SQL表达交并差操作
  12. Intel 11代全新核显出现了!好强 好乱
  13. 获取CPU序列号的Delphi程序
  14. 【微信小程序——开发步骤1】
  15. PHP实现栈数据结构
  16. P2473 [SCOI2008]奖励关
  17. python 自然语言处理(六)____N-gram标注
  18. C++:继承访问属性(public/protected/private)
  19. Eclipse开发工具常用快捷键的使用技巧
  20. rsync同步公网yum源搭建本地yum仓库

热门文章

  1. MySQL基础之 日期时间函数
  2. js常见执行方法window.onload = function (){},$(document).ready()
  3. JS中的防抖与节流
  4. html简单介绍(二)
  5. 【JavaScript】read_line()、print()实现输入输出
  6. &#127538;Eclipse通过jdbc连接数据库制作简单登陆界面【新手必看】
  7. oracle 按条件删除、查询表
  8. OpenCV——直方图计算、寻早最值位置和对比匹配(判断两幅图的相似程度)
  9. Android Fragment(三)ListFragment简单介绍以及Fragment之间通信
  10. python在输出一段话中插入多个变量,每日作业补充