Codeforces Round #683 (Div. 2) Problem - A.Add Candies 題解
阿新 • • 發佈:2020-11-16
題目
題目連結
Codeforces Round #683 (Div. 2, by Meet IT) Problem - A.Add Candies
題目大意
現在有n個揹包。初始時候,第i個揹包裡面有i個糖。你目標是讓每個揹包裡的糖數量相等。
為了實現這個,你將:
- 選擇一個數m, 1<= m<=1000
- 進行m個操作。在第j個操作時候,你選擇一個揹包,然後除了選擇的揹包之外的所有揹包都增加j個糖。
你的目標是尋找一個合適的操作序列,使得每個揹包的糖數量相等。
- 保證有這樣的操作序列存在。
- 你不需要找到最小的m。
- 如果有多個符合的操作序列,你可以輸出任何一個。
輸入
每個測試包含多個測試情況。
第一行為測試的數量t(1<=t<=100)。
每個測試情況只有1行,包含了一個整數n。
輸出
對於每個測試情況,輸出2行答案。
在第一行輸出m(1<=m<=1000)——你想進行的操作的數量。
在第二行輸出m個正整數a1,a2,...,am(1<=ai<=n)。在這裡,aj表示你第j個操作想選擇的第j個揹包。
輸入樣例
2
2
3
輸出樣例
1
2
5
3 3 3 1 2
題解
這個題跟著樣例手推一遍就能理解題意了。
題目其實很簡單,最關鍵的就在於明白給除了選中的那個揹包以外的揹包加j個糖相等於給選中的那個揹包減j個糖。
明白了這點,就完事了。直接給第i個揹包減去i個糖果就行。
Then show the code.
//Problem - A.Add Candies #include <stdio.h> int main(){ int t, n, m; scanf("%d", &t); while(t--){ scanf("%d", &n); m = n; printf("%d\n", m); for(int i=1; i<=m; i++){ printf("%d", i); if(i != m) printf(" "); } printf("\n"); } return 0; }