首页 > 编程语言 >1-006 连续因子(分数 20,c++)

1-006 连续因子(分数 20,c++)

时间:2024-06-01 13:59:36浏览次数:21  
标签:20 int c++ current modifiedN 因子 006 len 序列

一个正整数 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

代码:

#include <iostream>
#include <cmath>

using namespace std;

int main() {
    int n;            // 要检查的数字
    int start = 0; // 最长序列的起始数字
    int maxLen = 0;   // 最长序列的长度
    int len;   // 当前序列的长度
    int current;      // 当前的除数
    int modifiedN;    // 被修改后用于计算的n

    cin >> n;
    // 遍历所有可能的起始数字,这边只能用sqrt 或者 i < n / i, 用i * i < n 会超时
    for (int i = 2; i < sqrt(n); i++) {
        len = 0;
        current = i;
        modifiedN = n;
        // 检查从i开始的连续整数是否能整除modifiedN
        while (modifiedN % current == 0) {
            len++;
            modifiedN /= current;
            current++;
        }
        // 更新找到的最长序列
        if (len > maxLen) {
            maxLen = len;
            start = i;
        }
    }
    // 如果没有找到任何可以整除n的连续整数序列
    if (start == 0) {
        start = n; // 序列就是n本身
        maxLen = 1;   // 长度为1
    }
    // 输出最长序列的长度
    cout << maxLen << endl;
    // 输出序列本身
    for (int i = start, count = 1; count <= maxLen; i++, count++) {
        if (count > 1) cout << "*";
        cout << i;
    }
}

整活代码:

#include<iostream>
int n,s,l,_,m,j;
int main(){std::cin>>n;for(int i=2;i<n/i;i++)
{l=0,j=i,_=n;while(_%j==0)l++,_/=j++;if(l>m)m=l,s=i;}
if(!s)s=n,m=1;_=1;std::cout<<m<<'\n'<<s;
for(int i=s+1;_<m;i++,_++)std::cout<<"*"<<i;}

标签:20,int,c++,current,modifiedN,因子,006,len,序列
From: https://blog.csdn.net/chq66666/article/details/139372868

相关文章

  • 【C++进阶】深入STL之string:掌握高效字符串处理的关键
    ......
  • 2024ICPC武汉邀请赛E. Boomerang 题解
    E-Boomerang(动态维护树的直径+二分)分析代码实现#include<bits/stdc++.h>#ifdefLOCAL#include"algo/debug.h"#else#definedebug(...)42#endif#defineintlonglongusingEdge=int;structHLD{ intn,times=0; std::vector<int>siz,top,......
  • 2021 NOIP
    廊桥分配1.错误想法:让当前飞机停到右端点最小的廊桥,但是当两个区间右端点都小于当前飞机左端点,选择最小的么?显然不是,应该选择序号最小的廊桥,这样不影响下一个飞机继续放置(左端点从小打到排序的)。这样,当只能有i个廊桥(枚举国内廊桥)的时候,也是可以取得最大值的。最后前缀和。错误......
  • C++ 智能指针学习笔记
    1、为什么使用智能指针?    一句话就是为了防止内存泄漏。voidremodel(std::string&str){std::string*ps=newstd::string(str)...str=ps;return;}    举个例子,如上面代码,每当调用时,该函数都分配堆内的内存,但从不收回,从而导致......
  • 20211317李卓桐 Exp8 Web安全 实验报告
    Exp8Web安全实验报告实践内容(1)Web前端HTMLWeb前端HTML(2)Web前端javascipt理解JavaScript的基本功能,理解DOM。在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”尝试注入攻击:利用回显用户名注入HTML及JavaScript。(3......
  • C++常用STL容器
    备注:文中图片来自hackingcpp.vectorvector是C++中最常用的容器,它可以动态改变自身大小。dequelist(双向链表)forward_list(单向链表)unordered_setsetunordered_mapmap......
  • c++ 集合类 CCSet简单实现
      代码如下:  /**CCSet.h*c++_common_codes**Createdbyxichenon12-1-21.*Copyright2012cc_team.Allrightsreserved.**/#ifndefCC_SET_H#defineCC_SET_H#include"ccVector.h"#include<iostream>//CCSettemplate&l......
  • [2024.5.31晚~2024.6.1早鲜花] 余生的第一天
    [2024.5.31晚~2024.6.1早鲜花]余生的第一天来\(GF\)集训一两周了,宿舍居然有电梯,而且学生居然可以乘坐,\(GF\)的饭也十分好吃,比\(XF\)的好吃一万倍,听\(yzj\)说清华附的比\(GF\)好吃一万倍,难以想象了认识了好多别的学校的女生!大家都好可爱(●'◡'●),传奇的原神传教大师\(cyl\)有......
  • 【华为OD】D卷真题200分:篮球比赛 C++代码实现[思路+代码]
    【华为OD】2024年C、D卷真题集:最新的真题集题库C/C++/Java/python/JavaScript【华为OD】2024年C、D卷真题集:最新的真题集题库C/C++/Java/python/JavaScript-CSDN博客 JS、C、C++、Java、python代码实现:【华为OD】D卷真题200分:篮球比赛JavaScript代码实现[思路+代码]-CSD......
  • LeetCode 2024/6 每日一题 合集
    2024/6/12928.给小朋友们分糖果I分析枚举所有可能的方案数即可代码实现classSolution{public:intdistributeCandies(intn,intlimit){intans=0;for(inta=0;a<=limit;++a){for(intb=0;b+a<=n&&b<=limi......