题目介绍:
大数学家高斯小时候偶然间发现一种有趣的自然数集合Blah,对于以a为基的集合Ba定义如下:
(1)a是集合Ba的基,且a是Ba的第一个元素;
(2)如果x在集合Ba中,则2x+1和3x+1也都在集合Ba中;
(3)没有其他元素在集合Ba中了。
现在小高斯想知道如果将集合Ba中元素按照升序排列,第N个元素会是多少?
代码示例:
#include<bits/stdc++.h>
using namespace std;
queue<int> q1,q2;//q1:2x+1 q2:3x+1
int main(){
int a,n,x,y,ans;
cin>>a>>n;
if(n==1){
cout<<a;
return 0;
}
q1.push(2*a+1);
q2.push(3*a+1);
for(int i=2;i<=n;i++){
x=q1.front();
y=q2.front();
if(x<y){
ans=x;
q1.pop();
}else{
ans=y;
q2.pop();
}
q1.push(2*ans+1);
q2.push(3*ans+1);
}
cout<<ans;
return 0;
}
(不一定是最简单的做法,建议大家自己多思考quq...)