[原题传送门]
题意
给你一个数字n,你可以用数字集1到n任意组合,组合后的数字放入数字集中,同时组合后的数字同样可以再次组合。求问该数字集1-n经过组合(也可以不组合)最多可以得出几个相同的数字。
思路
若n为1或2时,无法组合,也没有相同的数字,所以输出1 n为奇数时,n不组合,n-1与1组合,n-2与2组合…… 以此类推 可得最多相同数字的个数为(n-1)/2+1 n为偶数时,n与1组合,n-1与2组合……以此类推 可得最多相同数字的个数为n/2
输入
输入由多个测试用例组成。第一行包含单个整数t(1≤t≤1000)——测试用例的数量。接下来的t行包含测试用例的描述。
对于每个测试用例,只有一行包含单个整数n(1≤n≤109)。
输出
对于每个测试用例,打印一个整数-问题的答案。
my Accepted code
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#define ll long long
#define db double
#define inf INT_MAX
#define s(a, n) memset(a, n, sizeof(a))
#define rep(l, a, b) for (ll l = a; l < b; ++l)
#define per(l, a, b) for (ll l = a; l >= b; --l)
#define debug(a) cout << '#' << a << '#' << endl
using namespace std
;
bool fi
= true;
const unsigned long long MOD
= 1e9 + 7;
int main() {
ios
::sync_with_stdio(false);
cin
.tie(0), cout
.tie(0);
int t
;
cin
>> t
;
while (t
--) {
int n
;
cin
>> n
;
if (n
> 2) {
cout
<< (n
- 1) / 2 + 1 << endl
;
} else
cout
<< 1 << endl
;
}
}
ps.A题还是看了半天没头绪,扭头去写B,20多分写完B回来想了一会才想出来的,蒻蒟tcl