程式設計Week13 必做部分

2021-10-06 19:44:44 字數 3706 閱讀 6903

這一天,tt 遇到了乙個神秘人。

神秘人給了兩個數字,分別表示 n 和 k,並要求 tt 給出 k 個奇偶性相同的正整數,使得其和等於 n。

例如 n = 10,k = 3,答案可以為 [4 2 4]。

tt 覺得這個任務太簡單了,不願意做,你能幫他完成嗎?

本題是spj

input

第一行乙個整數 t,表示資料組數,不超過 1000。

之後 t 行,每一行給出兩個正整數,分別表示 n(1 ≤ n ≤ 1e9)、k(1 ≤ k ≤ 100)。

output

如果存在這樣 k 個數字,則第一行輸出 「yes」,第二行輸出 k 個數字。

如果不存在,則輸出 「no」。

example input

8103

100487

97288

31053

1000000000

9

example output

yes42

4yes555

535nono

yes111

1111

1noyes311

yes111111110

111111110

111111110

111111110

111111110

111111110

111111110

111111110

111111120

將乙個數分成k個數,我們盡量讓這k個數相等,所有首先用t1=n/k記錄商,t2=n-k*t1記錄餘數,判斷將t2加到t1上去會不會破環原t1奇偶性。

我們知道如果t2是偶數,直接將t2加到乙個t1上去不會破壞奇偶性;當t2為奇數時就要想辦法把t2在不改變t1整體奇偶性的前提下轉化為偶數,如果k為奇數,從每個t1中減一將k加到t2中去這樣就可以在不改變整體奇偶性的前提下讓t2轉化成偶數,若k為偶數則輸出no.

#include

#include

using

namespace std;

int t, n, k;

intmain()

if(t2 &1)

//餘數奇數無解;但要看看能否轉換為偶數

cout << endl;

continue;}

cout <<

"no"

<< endl;

continue;}

else

cout << endl;

continue;}

}system

("pause");

return0;

}

在你們的幫助下,tt 輕鬆地完成了上乙個神秘任務。

但是令人沒有想到的是,幾天後,tt 再次遇到了那個神秘人。

而這一次,神秘人決定加大難度,並許諾 tt,如果能夠完成便給他乙個獎勵。

任務依舊只給了兩個數字,分別表示 n 和 k,不過這一次是要求 tt 給出無法被 n 整除的第 k 大的正整數。

例如 n = 3,k = 7,則前 7 個無法被 n 整除的正整數為 [1 2 4 5 7 8 10],答案為 10。

好奇的 tt 想要知道獎勵究竟是什麼,你能幫幫他嗎?

input

第一行乙個整數 t,表示資料組數,不超過 1000。

之後 t 行,每一行給出兩個正整數,分別表示 n(2 ≤ n ≤ 1e9)、k(1 ≤ k ≤ 1e9)。

output

對於每一組資料,輸出無法被 n 整除的第 k 大的正整數。

example input

637

41221000000000797

1000000000

1000000000

21

example output

10

151999999999

1131000000001

1

這一道題相對簡單不少,和上一題類似,首先找到商值,再找到餘數,最後輸出就可以了

#include

#include

using

namespace std;

int t, n, k;

intmain()

// system("pause");

return0;

}

在大家不辭辛勞的幫助下,tt 順利地完成了所有的神秘任務。

神秘人很高興,決定給 tt 乙個獎勵,即白日做夢之撿貓咪遊戲。

撿貓咪遊戲是這樣的,貓咪從天上往下掉,且只會掉在 [0, 10] 範圍內,具體的座標範圍如下圖所示。

tt 初始站在位置五上,且每秒只能在移動不超過一公尺的範圍內接住掉落的貓咪,如果沒有接住,貓咪就會跑掉。例如,在剛開始的一秒內,tt 只能接到

四、五、六這三個位置其中乙個位置的貓咪。

喜愛貓咪的 tt 想要接住盡可能多的貓咪,你能幫幫他嗎?

input

多組樣例。每組樣例輸入乙個 m (0 < m < 100000),表示有 m 只貓咪。

在接下來的 m 行中,每行有兩個整數 a b (0 < b < 100000),表示在第 b 秒的時候有乙隻貓咪掉落在 a 點上。

注意,同乙個點上同一秒可能掉落多隻貓咪。m = 0 時輸入結束。

output

輸出乙個整數 x,表示 tt 可能接住的最多的貓咪數。

sample input

651

4161

7272830

sample output

4
這裡可以採用動態規劃的思想,用dp[i][j] 表示第i秒時j位置接到的餡餅的總數,每個狀態都是由後一秒的左邊乙個位置,位置不動和右邊乙個位置的最大值加當前狀態的值構成。

則狀態轉換方程為 dp[i][j] += max(dp[i+1][j-1], max(dp[i+1][j], dp[i+1][j+1])) 我們從最後一秒開始往前遍歷,這樣dp[0][5]就是最後的結果。注意如果是邊界,則超出邊界的那個位置不參與判斷。

#include

#include

#include

#include

using namespace std;

int n, x, t, mt, dp[12]

[100010];

intmain()

for(

int j = mt -

1; j >=

0;j--

)for

(int i =

0; i <=

10;i++

)printf

("%d\n"

,dp[5]

[0])

;}// system("pause");

return0;

}

Week13必做部分

題目大意 給定兩個數字,分別表示 n 和 k,並要求給出 k 個奇偶性相同的正整數,使得其和等於 n,例如 n 10,k 3,答案可以為 4 2 4 本題是spj 思路這個題乍一看沒有頭緒,其實仔細想一下 題目只需要奇偶性相同就可以,試想,若乙個數可以分成全是奇數的組合,則一定可以拆分為1 1 1 ...

Week13 作業 必做

a tt 的神秘任務1 這一天,tt 遇到了乙個神秘人。神秘人給了兩個數字,分別表示 n 和 k,並要求 tt 給出 k 個奇偶性相同的正整數,使得其和等於 n。例如 n 10,k 3,答案可以為 4 2 4 tt 覺得這個任務太簡單了,不願意做,你能幫他完成嗎?本題是spj input 第一行乙個...

week13 C TT 的獎勵(必做)

在大家不辭辛勞的幫助下,tt 順利地完成了所有的神秘任務。神秘人很高興,決定給 tt 乙個獎勵,即白日做夢之撿貓咪遊戲。撿貓咪遊戲是這樣的,貓咪從天上往下掉,且只會掉在 0,10 範圍內,具體的座標範圍如下圖所示。tt 初始站在位置五上,且每秒只能在移動不超過一公尺的範圍內接住掉落的貓咪,如果沒有接...