有乙個序列,初始狀態是「1」,每次都可以讓序列中的「1」變成「10」,讓「0」變成「1」,最後可以得到"1011010110110101101..."求這個序列的a到b中一共有多少個「1」。
找規律可以發現這個字串每次操作都是加上前兩次的字串,類似斐波那契的演算法,例如「101」是從「10」+「1」得來的,下乙個字串就是「101」加上前乙個「10」變成「10110」,我們根據這些字串可以知道第幾次操作時這些字串的長度和它們當前共有幾個「1」,然後用就可以用遞迴去查詢a到b中「1」的個數了。
#include#include#includeusing namespace std;
long long ans,a,b,t,l[100],d[100];
long long __ans(long long x,long long y)//求前x個數點的個數
int main()
scanf("%lld",&t);
while (t--)
return 0;
}
8 12 無限序列 1861
我們按以下方式產生序列 1 開始時序列是 1 2 每一次變化把序列中的 1 變成 10 0 變成 1 經過無限次變化,我們得到序列 1011010110110101101 總共有 q 個詢問,每次詢問為 在區間a和b之間有多少個1。任務 寫乙個程式回答q個詢問 輸入 第一行為乙個整數q,後面有q行,...
字首和 無限序列
我們按以下方式產生序列 1 開始時序列是 1 2 每一次變化把序列中的 1 變成 10 0 變成 1 經過無限次變化,我們得到序列 1011010110110101101 總共有 q 個詢問,每次詢問為 在區間a和b之間有多少個1。任務 寫乙個程式回答q個詢問 第一行為乙個整數q,後面有q行,每行兩...
模擬 無限序列
題目描述 我們按以下方式產生序列 1 開始時序列是 1 2 每一次變化把序列中的 1 變成 10 0 變成 1 經過無限次變化,我們得到序列 1011010110110101101 總共有 q 個詢問,每次詢問為 在區間a和b之間有多少個1。任務 寫乙個程式回答q個詢問 輸入 第一行為乙個整數q,後...