首页 > 其他 > 详细

幂积序列 1424

时间:2019-06-20 19:58:04      阅读:220      评论:0      收藏:0      [点我收藏+]

题目描述:

设x,y为非负整数,试计算集合M={(2^x)*(3^y),x>=0,y>=0}的元素不大于指定整数n的个数,并求这些元素从小到大排序的第m项。

输入描述:

多组输入,每组一行,输入n和m,n和m之间用一个空格分开

输出描述:

对于每组输入,输出数列中不大于n的项数以及第m项的值,这两个数占两行。

样例输入:

10000000 100

样例输出:

190

93312

 

思想:可以从另一个角度解决问题,将幂积变为整除角度来解决问题

 1 #include<iostream>
 2 using namespace std;
 3 int main(){
 4     int n,m;
 5     while(cin>>n>>m){
 6         int a[10000];
 7         int i,j,p,ns=3;
 8         a[1]=1;
 9         a[2]=2;
10         for(i=3;i<=n;i++){
11             p=i;
12             while(p%2==0){//将2和3的因子去除
13                 p=p/2; 
14             }
15             while(p%3==0){
16                 p=p/3;
17             }
18             if(p==1){
19                 a[ns]=i;
20                 ns++;
21             }
22         }
23         ns=ns-1;
24         cout<<ns<<endl;
25         cout<<a[m]<<endl;
26     } 
27 } 

 

幂积序列 1424

原文:https://www.cnblogs.com/zq-dmhy/p/11060868.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!