//POJ2591 维护两个指针,小心相等的情况以避免重复
#include <iostream>
#include <string>
using namespace std;
int n;
int a[10000005];
void list()
{
int i = 0, j = 0;
int k = 1;
while(k <= 10000000)
{
if(a[i] * 2 + 1 < a[j] * 3 + 1)
{
a[k++] = a[i] * 2 + 1;
i++;
}
else if(a[i] * 2 + 1 > a[j] * 3 + 1)
{
a[k++] = a[j] * 3 + 1;
j++;
}
else{
a[k++] = a[i] * 2 + 1;
i++;
j++;
}
}
}
int main()
{
a[0] = 1;
a[1] = 3;
a[2] = 4;
list();
cin>>n;
while(!cin.eof())
{
cout<<a[n-1]<<endl;
cin>>n;
}
return 0;
}
POJ2591
最新推荐文章于 2017-12-05 21:23:00 发布