题目链接:https://vjudge.net/contest/397104#problem/A
题解:给定数字k,判断数字1,2,3,……,k。当经过两个数相加成另一个数,所得的数最多的个数。
因为时是等差数列,
当k为奇数时,因为会落下一个数,此处为最大的数,所以此处的和即为(n-1)/2+1,结果即为(n+1)/2
当k为偶数时,当加和为中间的数相加时,个数最多。其实就相当于,如何从1加到100,是(1+100)*50,这样的话就是101的个数最多,那么个数即为(k)/2。
所以答案为(n+1)/2。
代码:
#include<iostream>
#include<algorithm>
typedef long long ll;
using namespace std;
int main()
{
ll n;
int t;
scanf("%d",&t);
while(t--)
{
scanf("%lld",&n);
printf("%lld\n",(n+1)/2);
}
return 0;
}