题目大意:
一共有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;
}
}