• [测试题]神在夏至祭降下了神谕(oracle)


    Description

    我们村子在过去的 400 年中, 断绝与下界的接触, 过着自给自足的生活。
    夏至祭是一场迎接祖灵于夏季归来, 同时祈求丰收的庆典。
    村里的男人会在广场上演出夏之军和冬之军的战争。 夏之军会打倒冬之军的大将冬男, 再放火将他连山车一起烧掉。
    参与这场演出的一共有 N+M 位战士, 其中 N 个人是冬之军, M 个人是夏之军。
    冬之军的大将冬男拥有改变季节的力量。 他每次可以任意选取恰好 K 名战士, 然后把这 K 个人中所有的夏之军变成冬之军, 所有的冬之军变成夏之军。
    冬男可以使用任意多次改变季节的力量, 直到他将所有的人都变成了冬之军。
    如果冬男将所有的人都变成了冬之军, 那么冬男就获得了胜利。
    我想要知道, 对于给定的 N,M,K, 冬男是否有可能获得胜利。
    神有时会降下神谕, 帮助你作出判断。

    Input

    第一行包括一个正整数 year, 表示进行夏至祭的年份。
    第二行包括一个正整数 T, 表示数据的组数。
    接下来 T 行, 每行三个非负整数 N,M,K, 每一行表示一组数据。 输入数据保证 K>0

    Output

    T 行, 每行为一个字符串“Case x: S” , 不包含引号。
    x 表示当前为第 x 组数据, 从 1 开始编号,
    若冬男有可能获得胜利, S Winter, 否则 S Summer

    Sample Input

    1924
    9 2
    0 3
    2 1 4
    2 6 3
    100 5 12
    7 6 10
    6 6 10
    1000000000000000000 1 2
    500000000 500000000 987654321
    1000000000 1000000000 987654321

    Sample Output

    Case 1: Winter
    Case 2: Summer
    Case 3: Winter
    Case 4: Summer
    Case 5: Winter
    Case 6: Winter
    Case 7: Summer
    Case 8: Winter
    Case 9: Winter

    Hint

     

    神谕 2M 是奇数。
    神谕 3K 是奇数。
    √表示对于这个测试点的所有 T 组数据, 神降下了神谕。
    ×表示对于这个测试点的所有 T 组数据, 神否定了神谕。
    也就是说, 若神谕为“X 是奇数” , 则×表示“X 是偶数” 。
    所有数据保证 K>0
    请注意特判 M=0N+M<K 等特殊情况, 读入时请使用 long long int64

    题解

    我们先不妨将$m=m%k$,

    那么为了有解,我们要将$m$加个数或者减个数,使得其模$k$为$0$,

    我们假设有$x$个从$n$变成$m$,$y$个从$m$变成$n$。

    那么就有

    $$(m+x-y=k||m-x+y=0)&&x+y=k$$

    那么只要解这两个方程组,判断有无整数解即可。

    其实化简后就是判断$m$和$k$的奇偶性。

     1 #include<set>
     2 #include<map>
     3 #include<cmath>
     4 #include<ctime>
     5 #include<queue>
     6 #include<stack>
     7 #include<vector>
     8 #include<cstdio>
     9 #include<string>
    10 #include<cstring>
    11 #include<cstdlib>
    12 #include<iostream>
    13 #include<algorithm>
    14 #define LL long long
    15 using namespace std;
    16 
    17 int year,t;
    18 LL n,m,k,rk;
    19 
    20 int main()
    21 {
    22     scanf("%d%d",&year,&t);
    23     for (int ca=1;ca<=t;ca++)
    24     {
    25         printf("Case %d: ",ca);
    26         scanf("%lld%lld%lld",&n,&m,&k);
    27         if (m%k==0) printf("Winter
    ");
    28         else if (m+n<k) printf("Summer
    ");
    29         else if (m+n==k&&m!=0) printf("Summer
    ");
    30         else
    31         {
    32             if (k%2) rk=1;
    33             else rk=2;
    34             if (k>m&&(k-m)%rk==0) printf("Winter
    ");
    35             else if (k<m&&(m-k)%rk==0) printf("Winter
    ");
    36             else printf("Summer
    ");
    37         }
    38     }
    39     return 0;
    40 }
  • 相关阅读:
    lsyncd实时同步搭建指南——取代rsync+inotify
    Linux内存管理
    [Python爬虫] 之十一:Selenium +phantomjs抓取活动行中会议活动信息
    [Python爬虫] 之十:Selenium +phantomjs抓取活动行中会议活动
    [Python爬虫] 之九:Selenium +phantomjs抓取活动行中会议活动(单线程抓取)
    python 正则表达式
    Scrapy 安装
    python 安装whl文件
    [Python爬虫] 之八:Selenium +phantomjs抓取微博数据
    [Python爬虫] 之七:selenium webdriver定位不到元素的五种原因及解决办法(转载)
  • 原文地址:https://www.cnblogs.com/NaVi-Awson/p/7412478.html
Copyright © 2020-2023  润新知