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; }