Processing math: 100%

【uoj#282】长度测量鸡 结论题

题目描述

给出一个长度为 n(n+1)2 的直尺,要在 0n(n+1)2 之间选择 n1 个刻度,使得 1n(n+1)2 中任意一个长度都可以由某两个刻度(包括 0n(n+1)2 )之间的距离表示出来。问是否有解。

n2500 


题解

结论题

结论:当且仅当 n3 时有解。

神TM结论。。。

证明:

由于只有 C2n+1=n(n+1)2 种选择,因此一个长度只能用一种方式表示。
n>3 时,设 m=n(n+2)2 ,有 m10
由于要表示 m1 ,因此 1m1 必有刻度,由于对称性不妨设 1 处有刻度。这样 1 也被表示出来。
由于要表示 m2 ,因此 2m2m1 必有刻度,而 2m1 会使得 1 被表示两次,只能选择 m2 处。这样 2m3 也被表示出来。
由于要表示 m4 ,因此 24m4m3 必有刻度,而 2m3 会使得 1 被表示两次,m4 会使得 2 被表示两次,只能选择 4 处。这样 34m6 也被表示出来;
由于要表示 m5 ,因此 35m5m4m1必有刻度,容易发现这些位置都不能选择,无法表示 m5 。又因为 m10 ,因此前面表示的 1,2,3,4 均不等于 m5 。所以不能表示 m5 ,无解,命题得证。

因此直接判断 n3 的大小关系即可。

1
2
3
4
5
6
7
8
#include <cstdio>
int main()
{
    int T , n;
    scanf("%d" , &T);
    while(T -- ) scanf("%d" , &n) , puts(n > 3 ? "-1" : "1");
    return 0;
}

 

posted @   GXZlegend  阅读(313)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示