藍橋訓練之下山

2021-10-04 02:11:10 字數 1013 閱讀 3541

下山

今天是小x跟隨**學習程式設計的最後一天,這天早晨師傅給了他乙個列表,列表中已有乙個數n(0 <= n < 2^50)。

師傅告訴小x:「從現在開始,對於列表裡的每個大於1的數x,你要先刪掉它,然後用 x/2 , x%2 , x/2 三個數插入他原本的位置,直到沒有數大於1,

傍晚時我會給你乙個區間 [ l , r ],你要告訴我列表內下標位於此區間內的1的個數」( l >= 1 , r >= 1 )

小x想出色的完成任務讓師傅放心,他已經寫了大部分**了,你能幫他完成剩下的兩個空嗎。

#include

#define ll long long

using namespace std;

ll n;

ll l,r;

ll length(ll n)

ll cal(ll n,ll l,ll r)

int main(int argc, char const *ar**)

思路:首先我們要明白的是函式引數代表的是什麼?cal(n,l,r),n代表的是當前要替換的數字,l和r代表的是當前n轉化之後的座標範圍[l,r]。這一點要明白,如果l>mid的話說明,要去找當前n的右區間,而接著往下走的時候就變成了cal(n/2,)。我們要計算的是上乙個n的[l,r]在n/2的範圍是什麼?這是容易混淆的一點。如果前兩個條件都不符合的話,說明就要找兩個區間了,還是要注意上面那一點,除此之外,還要記得判斷(n%2是否為1。

**如下:

#include

#define ll long long

using

namespace std;

ll n;

ll l,r;

ll length

(ll n)

ll cal

(ll n,ll l,ll r)

intmain

(int argc,

char

const

*ar**)

努力加油a啊,(o)/~

藍橋杯訓練

題目 水仙花數 輸出100 999中的所有水仙花數。若3位數abc滿足 abc a3 b3 c3,則稱為水仙花數,例如153 13 53 33 int main int argc,char ar return0 相傳韓信才智過人,從不直接清點自己軍隊的人數,只要讓士兵先後以三人一排 五人一排 七人一...

藍橋杯入門訓練

1.a b問題 include int main 2.序列求和問題 include int main 3.圓的面積問題 include include define pi atan 1.0 4 int main 4.fibonacci數列 include int main 注意陣列的長度100000...

藍橋訓練 拓撲排序

有 個士兵 1 26 編號依次為 佇列訓練時,指揮官要把一些士兵從高到矮一次排成一行,但現在指揮官不能直接獲得每個人的身高資訊,只能獲得 p1比p2高 這樣的比較 結果 p1 p2 記為 p1 p2 如 表示 比 高。請編一程式,根據所得到的比較結果求出一種符合條件的排隊方案。注 比較結果中沒有涉及...