51 nod 1062 序列中最大的數

2021-08-15 08:09:22 字數 1006 閱讀 5129

1062 序列中最大的數

有這樣乙個序列a:

a[0] = 0

a[1] = 1

a[2i] = a[i]

a[2i+1] = a[i] + a[i+1]

輸入乙個數n,求a[0] - a[n]中最大的數。

a[0] = 0, a[1] = 1, a[2] = 1, a[3] = 2, a[4] = 1, a[5] = 3, a[6] = 2, a[7] = 3, a[8] = 1, a[9] = 4, a[10] = 3。

例如:n = 5,最大值是3,n = 10,最大值是4。

input

第1行:乙個數t,表示後面用作輸入測試的數的數量。(1 <= t <= 10)

第2 - t + 1行:t個數,表示需要計算的n。(1 <= n <= 10^5)

output

共t行,每行1個最大值。
input示例

2

510

output示例

3

4

ps: n

的範圍只到十萬,稍微有些小,所以直接打表就能過。

#include #define maxn 100000 + 999

typedef long long ll;

using namespace std;

ll a[maxn],b[maxn];

void init()

{ a[0]=0; a[1]=1;

b[0]=0; b[1]=1;

int i;

for(i=2; i<=maxn; i++)

{ int j=i/2;

if(i%2!=0)

a[i]=a[j]+a[j+1];

else

a[i]=a[j];

if(b[i-1]>t;

while(t--)

{ int n;

cin>>n;

cout<

51nod 1062 序列中最大的數

1062 序列中最大的數 ural 1079 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 有這樣乙個序列a a 0 0 a 1 1 a 2i a i a 2i 1 a i a i 1 輸入乙個數n,求a 0 a n 中最大的數。a 0 0,a 1 1,a 2 ...

51nod 1062 序列中最大的數 (打表)

基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 有這樣乙個序列a a 0 0 a 1 1 a 2i a i a 2i 1 a i a i 1 輸入乙個數n,求a 0 a n 中最大的數。a 0 0,a 1 1,a 2 1,a 3 2,a 4 1,a 5 3,a 6...

51Nod 1062 序列中最大數 打表

有這樣乙個序列a a 0 0 a 1 1 a 2i a i a 2i 1 a i a i 1 輸入乙個數n,求a 0 a n 中最大的數。a 0 0,a 1 1,a 2 1,a 3 2,a 4 1,a 5 3,a 6 2,a 7 3,a 8 1,a 9 4,a 10 3。例如 n 5,最大值是3,n...