題目:
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種走法只要有一步不一樣,即被...