Codeforces Round #654 (Div. 2) [A. Magical Sticks] 题解

    技术2022-07-12  74

    [原题传送门]

    题意

    给你一个数字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

    Processed: 0.013, SQL: 10