一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。
输入格式:
输入在一行中给出一个正整数 N(1
输出格式:
首先在第 1 行输出最长连续因子的个数;然后在第 2 行中按 因子1*因子2*……*因子k 的格式输出最小的连续因子序列,其中因子按递增顺序输出,1 不算在内。
输入样例:
630
输出样例:
3
思路:
首先,题目求的是 最长连续因子的个数 + 升序排序的连续因子的序列
由题目,数据的范围是 2~ 2^30 -1,可以借此推算得到序列的最长长度
#include
int main(){
int u =;
for(int i = ;i< ;i++){
u = u *;
}
int sum = ;
for(int i = ;i < ;i++)
{
sum = sum * i;
if(sum >= u){
printf("%d %d\n",i,sum);
break;
}
}
return ;
}
可见,当序列的最长长度(1*2*3*4.....*12)时,所得值仍在数据范围之内,当继续乘到13时,超出数据的范围,可见,在数据范围内,整个序列的最大连续长度为12
而对于求一个数n的因子,只需要判定从 2 ~ √n 是否存在因数即可:
那么接下来就可以,从序列的最大长度12往下暴力循环{
每次循环内部都从2开始做为因数判定开始的数字,直到 √n{
针对因数判定开始的数字,往后连续乘当前循环判定的序列的长度的数字;
根据连续乘所得的数字判定是否是n的因子,如果是,则退出循环,否则继续;
}
}
最后根据 因数判定开始的数字 + 序列的长度,输出连续的序列即可
为什么会得到 最长连续因子的个数 ?
因为是从最长的因子序列的长度(12)、最小的因子开始循环判定(2),保证了一旦发现有这样的序列的积是它的因子,那么这样的序列必然是最长的连续序列。
# 注解:为了达到最长的因子序列的目的,应使 4*5*6 ==> 2*3*4*5 。所以,可以由长度最大、序列开始因子最小开始暴力循环,进行寻找。
#include
#include
using namespace std;
typedef long long ll;
int main()
{
ll n;
cin>>n;
ll prd;
int rootn=sqrt(n);//得到根号N
int flag=,start,len;//定义是否为乘积因子的标识,乘积序列开始的因子,序列长度
for(len=;len>=;len--)//序列最长为12,递减到1
{
for(start=;start<=rootn;start++)//从当前一轮乘积因子的上界从2开始到根号N,注意一定是小于等于,否则有一个点会不过
{
prd=;
for(int i=start;i
prd*=i;
if(n%prd==)//如果找到乘积因子
{
flag=;
break;//标识,及时退出
}
}
if(flag)
break;
}
if(!flag)//如果未标识为1,说明是质数
cout<<<
else
{
cout<
for(int i=start+;i
cout<
}
return ;
}
PTA L1-006 连续因子【暴力模拟】
一个正整数N的因子中可能存在若干连续的数字.例如630可以分解为3*5*6*7,其中5.6.7就是3个连续的数字.给定任一正整数N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列. 输入 ...
L1-006. 连续因子
https://www.patest.cn/contests/gplt/L1-006 题目地址 在上面 一个正整数N的因子中可能存在若干连续的数字.例如630可以分解为3*5*6*7,其中5.6.7就 ...
pat L1-006. 连续因子
L1-006. 连续因子 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一个正整数N的因子中可能存在若干连续的数字.例如630 ...
PTA L1题目合集(更新至2019.3)
L1-001 Hello World (5 分) 链接:https://pintia.cn/problem-sets/994805046380707840/problems/9948051471320 ...
L1-006 连续因子 (20 分) 模拟
一个正整数 N 的因子中可能存在若干连续的数字.例如 630 可以分解为 3×5×6×7,其中 5.6.7 就是 3 个连续的数字.给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的 ...
L1-006 连续因子(20)(思路+测试点分析)
L1-006 连续因子(20 分) 一个正整数 N 的因子中可能存在若干连续的数字.例如 630 可以分解为 3×5×6×7,其中 5.6.7 就是 3 个连续的数字.给定任一正整数 N,要求编写程序 ...
天梯赛 L1-006 连续因子 (模拟)
一个正整数N的因子中可能存在若干连续的数字.例如630可以分解为356*7,其中5.6.7就是3个连续的数字.给定任一正整数N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列. 输入格式 ...
PAT 天梯赛 L1-006. 连续因子 【循环】
题目链接 https://www.patest.cn/contests/gplt/L1-006 思路 输出的连续因子 的乘积 也要是这个数的因子 就每个数先找它的单因子 然后每个单因子往上一个一个遍历 ...
团体程序设计天梯赛-练习集L1-006. *连续因子
L1-006. 连续因子 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一个正整数N的因子中可能存在若干连续的数字.例如630 ...
随机推荐
java 集合 Connection 栈 队列 及一些常用
集合家族图 ---|Collection: 单列集合 ---|List: 有存储顺序 , 可重复 ---|ArrayList: 数组实现 , 查找快 , 增删慢 ---|LinkedList: 链表实 ...
[LeetCode] Valid Parentheses
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...
js获取一个对象的所以属性和值
在HTML DOM中,获取某个元素对象的时候,往往记不住它的很多属性,可以通过下面的例子来查找一下:
& ...imageNamed 与 imageWithContentsOfFile的区别
如题,是不是大家为了方便都这样加载图片啊 myImage = [UIImage imageNamed:@"icon.png"];那么小心了这种方法在一些图片很少,或者图片很小的程序 ...
【仿携程JQuery日期价格表】
今天比较闲所以就花点时间又写了点东西. 相信这种价格表大家不会陌生 现在我就模仿它做一个简单版本的.效果如下 首先需要两个时间控件,我这里用的是HTML5里面的时间控件,这个没限制喜欢用什么就用什么 ...
html5权威指南:标记文字
html5权威指南-第八章-用基本的文字元素标记内容 :http://www.cnblogs.com/yc-755909659/archive/2016/10/02/5928122.html html ...
xcode 没有 iphone4s 模拟器 的解决方法..
项目需要iphone 4s 测试. 首先是Xcode 8 没有 iphone 4s的模拟器了. 由于线上安装的方式,不管是在code的add simulator 还是 ruby gem 的code-i ...
springboot集成elasticsearch
在基础阶段学习ES一般是首先是 安装ES后借助 Kibana 来进行CURD 了解ES的使用: 在进阶阶段可以需要学习ES的底层原理,如何通过Version来实现乐观锁保证ES不出问题等核心原理: 第 ...
webrtc学习: 部署stun和turn服务器
webrtc的P2P穿透部分是由libjingle实现的. 步骤顺序大概是这样的: 1. 尝试直连. 2. 通过stun服务器进行穿透 3. 无法穿透则通过turn服务器中转. stun 服务器比较简 ...