序列中最大的數(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 = 10,最大值是4。輸入
第1行:一個數T,表示後面用作輸入測試的數的數量。(1 <= T <= 10)
第2 - T + 1行:T個數,表示需要計算的n。(1 <= n <= 10^5)輸出
共T行,每行1個最大值。
輸入樣例
2
5
10輸出樣例
3
4
思路:根據規律將陣列 a[] 打個表,在打表的過程中順便把前 n 個數的最大值求了,最後直接根據查詢輸出即可
源程式
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
#define E 1e-9
#define PI acos(-1.0)
#define INF 0x3f3f3f3f
#define LL long long
const int MOD=7;
const int N=100000+5;
const int dx[]= {-1,1,0,0};
const int dy[]= {0,0,-1,1};
using namespace std;
int a[N];
int res[N];
void init(){
a[0]=0;
a[1]=1;
res[0]=0;
res[1]=1;
int maxx=-INF;
for(int i=2;i<=1E5;i++){
if(i%2==0)
a[i]=a[i/2];
else
a[i]=a[(i-1)/2]+a[(i-1)/2+1];
res[i]=max(res[i-1],a[i]);
}
}
int main(){
init();
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
printf("%d\n",res[n]);
}
return 0;
}
相關文章
- 求最大子序列的問題
- leetcode 152 乘積最大子序列LeetCode
- 返回陣列中的最大元素個數陣列
- 矩陣中移動的最大次數.18076762矩陣
- 求 10 個整數中的最大值
- P2642 雙子序列最大和
- [-演算法篇-] 最大子序列和演算法
- JZ-070-數字序列中的某一位數字
- 用一個巨集實現求兩個數中的最大數
- 求最大公約數 & 最大公約數
- python 中的序列Python
- subprocess中命令為引數序列和字串的區別字串
- 【leetcode】53. Maximum Subarray 連續子序列的最大和LeetCode
- 演算法題:乘積最大子序列演算法
- 小於n的最大數
- 數字序列
- 劍指 Offer 44. 數字序列中某一位的數字
- Java中查詢給定數字下最大素數的2種方法Java
- 2.6.6 指定程式的最大數量
- 三個數的最大乘積
- 用數學歸納法證明前序序列和中序序列唯一的確定一個二叉樹序列二叉樹
- double型別中可精確表達的最大正整數型別
- mysql關於最大連線數、最大併發執行緒數的區別MySql執行緒
- 最大數問題
- 輸入n個元素組成的序列s,你需要找出一個乘積最大的連續子序列
- Java中的序列化與反序列化Java
- hadoop中的序列化Hadoop
- 用數學方法分析哪類遊戲中的AI難度最大遊戲AI
- 測試 mysql 的最大連線數MySql
- 相鄰兩數的最大差值
- 求最大質因數
- Redis最大clients數研究Redisclient
- LeetCode-179-最大數LeetCode
- 004 最大公約數
- Python中的有序序列有哪些Python
- 最大公約數,最小公倍數
- 最小公倍數&&最大公約數
- Python:求列表的最大數以及下標Python