zoukankan      html  css  js  c++  java
  • PAT 1096 Consecutive Factors (20)

    1096 Consecutive Factors (20)(20 分)

    Among all the factors of a positive integer N, there may exist several consecutive numbers. For example, 630 can be factored as 3*5*6*7, where 5, 6, and 7 are the three consecutive numbers. Now given any positive N, you are supposed to find the maximum number of consecutive factors, and list the smallest sequence of the consecutive factors.

    Input Specification:

    Each input file contains one test case, which gives the integer N (1<N<2^31^).

    Output Specification:

    For each test case, print in the first line the maximum number of consecutive factors. Then in the second line, print the smallest sequence of the consecutive factors in the format "factor[1]*factor[2]*...*factor[k]", where the factors are listed in increasing order, and 1 is NOT included.

    Sample Input:

    630
    

    Sample Output:

    3
    5*6*7

    题意:找出整数的连续因子
    思路:用queue保存整数的连续因子, l,r保存第一个连续因子和最后一个连续因子, maxx保存连续因子的最长长度, sum记录连续因子的和
        如果n%sum!=0, 则表示连续因子中断,把queue清空,sum设置为1;
        如果n%num==0,表示为连续因子,和max比较,更新maxx以及左右端点
        因为是连续的数相乘,相当于阶乘,长度不会超过30;
    注意点: 应该用long来保存整数,否则最后一个测试点会超时
         maxx的初始值为0, 但是给出的数可能是素数,对于这种情况单独处理;
     1 #include<iostream>
     2 #include<queue>
     3 #include<cmath>
     4 using namespace std;
     5 int main(){
     6   long n, i, sum=1, maxx=0, l=0, r=0;
     7   cin>>n;
     8   queue<int> q;
     9   l=r=n;11   for(i=2; i<30; i++){
    12     sum *= i;
    13     q.push(i);
    14     while(n%sum!=0){
    15       sum /= q.front();
    16       q.pop();
    17     }
    18     if(q.size()>maxx){
    19       maxx = q.size();
    20       l=q.front();
    21       r=q.back();
    22     }
    23     
    24   }
    25   if(l==r) maxx=1;
    26   cout<<maxx<<endl;
    27   for(i=l; i<=r; i++){
    28     if(i==l) cout<<l;
    29     else printf("*%d", i);
    30   }
    31   return 0;
    32 }
    有疑惑或者更好的解决方法的朋友,可以联系我,大家一起探讨。qq:1546431565
  • 相关阅读:
    【java】httpclient的使用之java代码内发送http请求
    【前台 ajax】前台ajax请求,地址正确,但是报错不进入后台
    【IntelliJ IDEA】idea上提交代码到GitHub,已经提交了 但是GitHub上却没有的解决办法
    【Jpa hibernate】一对多@OneToMany,多对一@ManyToOne的使用
    数据库SQL优化大总结之 百万级数据库优化方案
    mysql explain 的type解释
    多线程过滤敏感词
    H5实现的手机摇一摇
    nginx中文文档
    JS实现根据密码长度 显示安全条
  • 原文地址:https://www.cnblogs.com/mr-stn/p/9217379.html
Copyright © 2011-2022 走看看