1333:【例2-2】Blah数集
注意是数组,答案数组中不能有重复数字
q数组是存储答案的
代码:
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<string> #include<cstdlib> using namespace std; int a,n; int q[1000000]; void work(int a,int n) { int rear=2; q[1]=a; //a一定是第一个数字 int two=1,three=1; while(rear<=n) { long long t1=q[two]*2+1,t2=q[three]*3+1; int t=min(t1,t2); //保证升序,先存一个小的 if(t1<t2) two++; //确定哪一个情况可以扩列 else three++; if(t==q[rear-1]) //去重处理
continue; //continue就是忽略下面的指令,回到循环开始的while
q[rear++]=t; //rear++,先调用,后自加,也可以理解为下面两行: // q[rear]=t; // rear++; } cout<<q[n]<<endl; } int main() { while(cin>>a>>n) work(a,n); //由于你不知道到底要处理多少组数据,所以当输入时就工作一次 return 0; }