2020 05 22 習題訓練二

2022-09-06 18:15:08 字數 4069 閱讀 6753

題目:

a - candies

codeforces - 1343a

題意:給乙個數n,在k>1的情況下找乙個x符合:x+

2x+4

x+⋯+

2k−1

x=n'>x+2x+4x+⋯+2k−1x=n

x+2x+4x+⋯+2k−1x=n.

x+2

x+4x

+⋯+2

k−1x

=n'>做法:先求2n的字首和,然後然後每一項進行判斷。

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;const

int maxn=1e5+10

;long

long quick_power(int x, int

y)

else

return

res;

}ll a[

30];

intmain()

intt;

cin>>t;

while(t--)}}

return0;

}

題目:b - balanced array

codeforces - 1343b 

題意:給乙個數n,給出n個長度的陣列,前n/2個位偶數,後n/2位奇數,保證奇數加偶數相等。

x+2

x+4x

+⋯+2

k−1x

=n'>做法:若n被2整除且不被4整除,容易看出兩邊不會相等因為這樣奇數和永遠都是奇數。當能夠被4整除時,先隨便給n/2個偶數,再隨便給n/2-1個奇數,然後把偶數和減去奇數的和得到最後乙個奇數。

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;const

int maxn=1e5+10

;int

main()

else

for(int i = 1;i<=n/2-1;i++)

cout

cout

<}

} return0;

}

題目:c - ichihime and ********

codeforces - 1337a 

題意:給出四個數,a, b, c, d, a≤b

≤c≤d

'>a≤b≤c≤d

.。然後在四個數間找三個數x ,y, z.

做法:我們容易找到三條邊越相近越好,因此x=b,z=c。這也是題意的最符合的x與z。再根據三角形的性質,兩邊之差小於第三邊y > c-b。

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;const

int maxn=1e5+10

;int

main()

}cout

<"

"<"

"} return0;

}

題目:d - kana and dragon quest game

codeforces - 1337b 

題意:給乙個數n,然後有兩種操作,第一種操作消耗將n=n/2+10,操作次數為a,第二種為n-10,操作次數為b。在兩種操作次數內可不可以將n操作到n<=0.

做法:先使用第一種,但是判斷剩餘的n可不可以僅使用b完成。如果不可以接著使用第一種,可以的話,直接使用b。最後判斷n的值。

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;const

int maxn=3e6+10

;int

main()

else

if(b>0

)

if(x<=0

)

break

;

}if(x<=0

) cout

<<"

yes"

cout

<<"no"

<}

return0;

}

題目:e - candies and two sisters

codeforces - 1335a 

題意:給個糖果,把糖果分給a,b,但是要保證a的大於b的。

做法:為奇數的時候1……n/2,與n/2+1……n-1結合一下。偶數的時候去掉兩個相等的時候。

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;const

int maxn=3e6+10

;int

main()

else

}return0;

}

題目:f - construct the string

codeforces - 1335b

題意:給出三個數n, a, b。讓你給出乙個長度為n的字串,保證每a個連著的字元穿,至少有b個不同的字元。

做法:直接輸出b個不同的字元,在'a'……'a'+len(b)-1之間迴圈,保證在'a'……'z'之間,長度為n。因為保證存在了。

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;const

int maxn=3e6+10

;int

main()

cout

<}

return0;

}

2020 05 22 習題訓練二

x k 1 x 2 x 4x 2 k 1x n 思路 提取x,後面構成等比數列,求和,然後暴力求解 x k 1 x 2 x 4x 2 k 1x n includeusing namespace std define ll long longll pai int a,int b return ans ...

訓練3 習題10

題目 problem description 有一樓梯共m級,剛開始時你在第一級,若每次只能跨上一級或二級,要走上第m級,共有多少種走法?input 輸入資料首先包含乙個整數n,表示測試例項的個數,然後是n行資料,每行包含乙個整數m 1 m 40 表示樓梯的級數。output 對於每個測試例項,請輸...

訓練3 習題16

題目 problem description 在一無限大的二維平面中,我們做如下假設 1 每次只能移動一格 2 不能向後走 假設你的目的地是 向上 那麼你可以向左走,可以向右走,也可以向上走,但是不可以向下走 3 走過的格仔立即塌陷無法再走第二次 求走n步不同的方案數 2種走法只要有一步不一樣,即被...