【Codeforces】Magical Sticks

    技术2022-07-12  91

    题目链接

    题目大意:

    一共有t组数据,且每组数据都输入一个n。一共有n根魔法棒,且魔法棒的长高度从1每次增加1直到长度n。将魔法棒两两拼接到一起尽可能使拼接后的魔法棒长度一样,然后输出拼接后的魔法棒数目。

    思路:

    首先能知道若想得到最多的相等长度魔法棒,我们要从两端选取连接(长的与短的连接),其次看输入的n是偶数还是奇数;

    若为偶数,按照 1+n=2+(n−1)=3+(n−2)=... 的方法,起始魔法棒可以全部用完,最终我们有n/2根长度为n+1的魔法棒。 当为奇数,按照 n=1+(n−1)=2+(n−2)=... 的方法,剩余一根长度为n的魔法棒 ,最终我们有(n-1)/2+1 根长度为n的魔法棒。

    最后输出操作后的魔法棒数目。

    AC代码:

    #include <iostream> using namespace std; int main() { int t; cin >> t; while(t--) { int n,b; cin >> n; if(n%2==0) b=n/2; else b=(n+1)/2; cout << b << endl; } }

     

    Processed: 0.012, SQL: 9