Codeforces Round #654 (Div. 2) 参与排名人数14349 本场比赛主要心思放在观摩高手如何打比赛,发现初中生真的很厉害。
[codeforces 1371A] Magical Sticks 棍子拼接
总目录详见https://blog.csdn.net/mrcrack/article/details/103564004
在线测评地址http://codeforces.com/contest/1371/problem/A
Problem | Lang | Verdict | Time | Memory |
---|---|---|---|---|
A - Magical Sticks | GNU C++17 | Accepted | 31 ms | 200 KB |
题目大意:给定n根长度介于[1,n]的棍子,可以将棍子进行拼接,要求处理后,长度相同的棍子数量最多。输出这个最多的数量。
样例模拟如下:
1
1
拼接前(1)
拼接后,只有1根(1),输出雷同的1根
2
1
拼接前(1,2)
拼接后,只有1根(3),输出雷同的1根
3
2
拼接前(1,2,3)
拼接后,只有2根(1+2=3,3),输出雷同的2根
4
2
拼接前(1,2,3,4)
拼接后,只有3根(2,1+2=4,4),输出雷同的2根
5
3
拼接前(1,2,3,4,5)
拼接后,只有3根(1+4=5,2+3=5,5),输出雷同的3根
6
3
拼接前(1,2,3,4,5,6)
拼接后,只有4根(3,1+5=6,2+4=6,6),输出雷同的3根
7
4
拼接前(1,2,3,4,5,6,7)
拼接后,只有4根(1+6=7,2+5=7,3+4=7,7),输出雷同的4根
8
4
拼接前(1,2,3,4,5,6,7,8)
拼接后,只有4根(1+7=8,2+6=8,3+5=8,8),输出雷同的4根
这些例子举完,规律也就出来了,请看以下AC代码:
#include <stdio.h>
int main(){
int t,n,i,ans;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
ans=(n-1)/2+1;
printf("%d\n",ans);
}
return 0;
}