zcmu-1777 寻找倍数(反证法+抽屉原理)

题目链接

代码参考博客链接

思路(反证法):

1.桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面至少放两个苹果。这一现象就是我们所说的“抽屉原理”。

2.反证法:假设这n个数都选了,但是没有找到任何一种选择方案使得选择出来的数的和是n的整数倍,选择的n个数表示为a1,a2,...,an,

那么s1 = a1,s2 = a1 + a2,...,sn = a1 + a2 + ... + an,都不能被n整除,

3.sn % n的余数只可能是1,2,...,n - 1,所以根据抽屉原理,一定有两个:si,sj ,使得si % n == sj % n,

4.又有所给的数都是正整数,所以si - sj 的值一定为kn,那么只要k != 0,原命题就一定成立!

#include
main()
{
    int t,n,x;
    scanf("%d",&t);
    for(int k=1;k<=t;k++)
    {
        scanf("%d",&n);
        for(int i=0;i

 

 

你可能感兴趣的:(zcmu-1777 寻找倍数(反证法+抽屉原理))