1333:【例2-2】Blah数集

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

 

posted @ 2019-04-13 10:44  晔子  阅读(2050)  评论(0编辑  收藏  举报