Blah数集

【题目描述】

   大数学家高斯小时候偶然间发现一种有趣的自然数集合Blah,对于以a为基的集合Ba定义如下:

      (1)a是集合Ba的基,且a是Ba的第一个元素;

      (2)如果x在集合Ba中,则2x+1和3x+1也都在集合Ba中;

      (3)没有其他元素在集合Ba中了。

   现在小高斯想知道如果将集合Ba中元素按照升序排列,第N个元素会是多少?

【题目链接】

    http://ybt.ssoier.cn:8088/problem_show.php?pid=1333

【代码】

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 ll rec[1000010],tot;
 5 int p1,p2,a,n,i;
 6 int main()
 7 {
 8     while(scanf("%d%d",&a,&n)!=EOF) {
 9         tot=0;
10         rec[++tot]=a;
11         p1=p2=1;
12         while(tot<=n) {
13             ll a1=rec[p1]*2+1,a2=rec[p2]*3+1;
14             if(a1<a2) p1++; else p2++,a1=a2;
15             if(a1!=rec[tot]) rec[++tot]=a1;
16         }
17         printf("%lld
",rec[n]);
18     }
19     return 0;
20 }
原文地址:https://www.cnblogs.com/Willendless/p/9404029.html