這一天,tt 遇到了乙個神秘人。
神秘人給了兩個數字,分別表示 n 和 k,並要求 tt 給出 k 個奇偶性相同的正整數,使得其和等於 n。
例如 n = 10,k = 3,答案可以為 [4 2 4]。
tt 覺得這個任務太簡單了,不願意做,你能幫他完成嗎?
本題是spj
第一行乙個整數 t,表示資料組數,不超過 1000。
之後 t 行,每一行給出兩個正整數,分別表示 n(1 ≤ n ≤ 1e9)、k(1 ≤ k ≤ 100)。
如果存在這樣 k 個數字,則第一行輸出 「yes」,第二行輸出 k 個數字。
如果不存在,則輸出 「no」。
8103
100487
97288
31053
1000000000
9
yes42
4yes555
535nono
yes111
1111
1noyes311
yes111111110
111111110
111111110
111111110
111111110
111111110
111111110
111111110
111111120
大致分成兩種情況:
(1) n < k : 肯定不能實現,直接輸出「no」;
(2) n >= k :
如果是奇數類,將k - 1 個數全部置1,判斷剩下的n - k + 1 的奇偶情況,如果是奇數,那麼滿足;
如果是偶數類,將k - 1 個數全部置2,判斷剩下的n - 2 * (k - 1) 的奇偶情況,如果是偶數,那麼滿足;
#include
#include
#include
using
namespace std;
int t, n, k;
intmain()
int s1 = n - k +1;
//k - 1 個 1
int s2 = n -2*
(k -1)
;//k - 1 個 2
if(s1 %2==
1)if(s2 <=0)
if(s2 %2==
0)cout<<
"no"
<}}
在你們的幫助下,tt 輕鬆地完成了上乙個神秘任務。
但是令人沒有想到的是,幾天後,tt 再次遇到了那個神秘人。
而這一次,神秘人決定加大難度,並許諾 tt,如果能夠完成便給他乙個獎勵。
任務依舊只給了兩個數字,分別表示 n 和 k,不過這一次是要求 tt 給出無法被 n 整除的第 k 大的正整數。
例如 n = 3,k = 7,則前 7 個無法被 n 整除的正整數為 [1 2 4 5 7 8 10],答案為 10。
好奇的 tt 想要知道獎勵究竟是什麼,你能幫幫他嗎?
第一行乙個整數 t,表示資料組數,不超過 1000。
之後 t 行,每一行給出兩個正整數,分別表示 n(2 ≤ n ≤ 1e9)、k(1 ≤ k ≤ 1e9)。
對於每一組資料,輸出無法被 n 整除的第 k 大的正整數。
637
41221000000000797
1000000000
1000000000
21
10
151999999999
1131000000001
1
對於輸入的數n,從1開始,每n個數中就有n - 1個是不能被n整除的,所以只需要判斷是第幾段n - 1中的第幾個就可以了
#include
#include
#include
using
namespace std;
int t, n, k;
intmain()
return0;
}
在大家不辭辛勞的幫助下,tt 順利地完成了所有的神秘任務。
神秘人很高興,決定給 tt 乙個獎勵,即白日做夢之撿貓咪遊戲。
撿貓咪遊戲是這樣的,貓咪從天上往下掉,且只會掉在 [0, 10] 範圍內,具體的座標範圍如下圖所示。
tt 初始站在位置五上,且每秒只能在移動不超過一公尺的範圍內接住掉落的貓咪,如果沒有接住,貓咪就會跑掉。例如,在剛開始的一秒內,tt 只能接到
四、五、六這三個位置其中乙個位置的貓咪。
喜愛貓咪的 tt 想要接住盡可能多的貓咪,你能幫幫他嗎?
多組樣例。每組樣例輸入乙個 m (0 < m < 100000),表示有 m 只貓咪。
在接下來的 m 行中,每行有兩個整數 a b (0 < b < 100000),表示在第 b 秒的時候有乙隻貓咪掉落在 a 點上。
注意,同乙個點上同一秒可能掉落多隻貓咪。m = 0 時輸入結束。
輸出乙個整數 x,表示 tt 可能接住的最多的貓咪數。
651
4161
7272
830
4
用dp[ ] [ ] 陣列儲存能夠接住的貓咪.
狀態轉移方程:
第 i 秒,是從第(i - 1)秒轉移過來的,而第 j 個位置只能從 j / j + 1/ j - 1 轉移而來。
f[ i ][ j ] += max;
#include
#include
#include
using
namespace std;
int m, a, b;
int symbol;
int dp[
100010][
12];int
main()
for(
int i = symbol -
1; i >=
0; i--
)for
(int j =
0; j <
11; j++
) dp[i]
[j]+
=max
(dp[i +1]
[j +1]
,max
(dp[i +1]
[j], dp[i +1]
[j -1]
));
cout<[5
]<}return0;
}
Week13 作業 必做
a tt 的神秘任務1 這一天,tt 遇到了乙個神秘人。神秘人給了兩個數字,分別表示 n 和 k,並要求 tt 給出 k 個奇偶性相同的正整數,使得其和等於 n。例如 n 10,k 3,答案可以為 4 2 4 tt 覺得這個任務太簡單了,不願意做,你能幫他完成嗎?本題是spj input 第一行乙個...
Week13作業 選做題D
題意 在大家的三連助攻下,tt 一舉獲得了超級多的貓咪,因此決定開一間貓咖,將快樂與大家一同分享。並且在開業的那一天,為了紀念這個日子,tt 在貓咖門口種了一棵蘋果樹。一年後,蘋果熟了,到了該摘蘋果的日子了。已知樹上共有 n 個節點,每個節點對應乙個快樂值為 w i 的蘋果,為了可持續發展,tt 要...
程式設計思維與實踐 Week2 作業
b題 倒水問題 bfs 東東有一張地圖,想通過地圖找到妹紙。地圖顯示,0表示可以走,1表示不可以走,左上角是入口,右下角是妹紙,這兩個位置保證為0。既然已經知道了地圖,那麼東東找到妹紙就不難了,請你編乙個程式,寫出東東找到妹紙的最短路線。input 輸入是乙個5 5的二維陣列,僅由0 1兩數字組成,...