L1-006. 连续因子

#include <iostream>
using namespace std;
#include <cmath>
int main()
{
 int n, t, i, j;
 int num;
 int s;
 cin >> n;
 t = n;
 num = 0, s = 0;
 for (i = 2; i <= sqrt(n) + 1; i++)
 if (n%i == 0)
 {
  t = n / i;
  for (j = i + 1; j <= sqrt(n) + 1; j++)
  if (t%j == 0)  t = t / j;
  else break;
  if (j - i>num) num = j - i, s = i;
 }
 if (num == 0) { num = 1; s = n; }
 cout << num << endl;
 cout << s;
 for (int i = s + 1; i <= s + num - 1; i++)
  cout << "*" << i;
 cout << endl;
 return 0;
}

时间: 2024-10-13 23:29:35

L1-006. 连续因子的相关文章

CCCC 连续因子

题意: 一个正整数N的因子中可能存在若干连续的数字.例如630可以分解为3*5*6*7,其中5.6.7就是3个连续的数字.给定任一正整数N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列. 输入格式: 输入在一行中给出一个正整数N(1<N<231). 输出格式: 首先在第1行输出最长连续因子的个数:然后在第2行中按“因子1*因子2*……*因子k”的格式输出最小的连续因子序列,其中因子按递增顺序输出,1不算在内. 分析:暴力. #include<bits/stdc++.h&g

L1-6 连续因子 (新的开始

一个正整数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 解题思路

连续因子

题目: 思路:连续因子的范围一定是从1到sqrt(N),因为如果有一个数超过sqrt(N)了,那么无论它与前一个数还是后一个数相乘都会大于N.所以在1到sqrt(N)中暴力找出能被N整除的连续相乘的数串即可.如果N是质数,要另作考虑,输出的结果就是1和N. 上代码: import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub

L1-006 连续因子 (20 分) 模拟

一个正整数 N 的因子中可能存在若干连续的数字.例如 630 可以分解为 3×5×6×7,其中 5.6.7 就是 3 个连续的数字.给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列. 输入格式: 输入在一行中给出一个正整数 N(1). 输出格式: 首先在第 1 行输出最长连续因子的个数:然后在第 2 行中按 因子1*因子2*……*因子k 的格式输出最小的连续因子序列,其中因子按递增顺序输出,1 不算在内. 输入样例: 630 输出样例: 3 5*6*7 #incl

L1-006 连续因子 (20分)

题意分析 题目中已经将意思说的很清楚了,就是输出一个数的最长连续因子的个数,并且输出是哪几个因子相乘.可以将题目从这两个角度进行分析: N为素数时,最长连续因子的个数为1,即它自己. N不为素数时,即N为合数时,暴力模拟即可,将连续的数进行累积,直到累积后的结果不能被N整除为止,这样就能够不断更新最长连续因子的个数,预保留第一个数,就可以在最终输出是能够直接输出这几个连续因子. AC代码 #include<iostream> #include<cstdio> #include<

pta_l1-6(连续因子)

题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805138600869888 题意:给定n,求n的最长的连续子因子的长度,且输出最小的序列. 思路:我最开始就是暴力搜的,搜到最长的存下来即可,但忽略了我找的因子的乘积可能大于n,后来也没想到什么好的办法,然后参考了别人的题解.首先给出12!=479001600<231<13!=6227020800,这个要记住,从这可以看出n最长的连续子因子长度不会超过12,

『ACM C++』 PTA 天梯赛练习集L1 | 001-006

应师兄要求,在打三月底天梯赛之前要把PTA上面的练习集刷完,所以后面的时间就献给PTA啦~ 后面每天刷的题都会把答案代码贡献出来,如果有好的思路想法也会分享一下~ 欢迎大佬提供更好的高效率算法鸭~ ------------------------------------------------L1-001---------------------------------------------------------- 这道超级简单的题目没有任何输入. 你只需要在一行中输出著名短句“Hello

2.7学习报告

4个水题. L1-003,005,006,007,008. 要注意的有003:字符串要注意减'0' 006(没做完):求出最长连续因子的个数 刚看到就没有思路,再看还是没有... 网上思路大多是分n是质数和不是质数来求.写了质数部分,非质数部分没写完. 原文地址:https://www.cnblogs.com/zhyyyy/p/10355704.html

3.11-3.17 周记

3.11-3.17 这周比较水,周一满课,看了看单调队列优化dp,晚上准备英语演讲,做了些天梯赛的题目,周二几乎整天都在准备英语演讲.随手过了几个L1的题目.星期三结束了英语演讲之后,晚上怒刷L1.星期四将L1完结,开刷L2.周五看了看python,数据库,晚上继续L2.周六参加了西北大学校赛,跟sx大佬a了五个题,拿了全场第一个一血,太刺激了.最后过了五个题也还算完美.今天匆匆忙忙补完了作业,不敢拖拉,赶紧补上本周的总结 1. 天梯赛练习集-L1部分 L1-006?连续因子 #include