上海高校金马五校赛 D 数字游戏

原创 2018年04月15日 22:31:59

传送门

题意:给出两个区间[L1,R1] [L2,R2] 和一个模数mod ,两个人博弈,第一个人从区间1选出一个数字,第二个人从区间二选出一个数字,然后把第二个数字拼接到第一个数字后边,形成的新数字能被mod整除,则第二个人赢,否则第一个人赢,问第一个人是否必胜。

题解:拼出来的数字形如:A*10^lb+B。(lb为B的位数),这个数字对mod取模为 (A%mod)*(10^lb%mod)+(B%mod),由此可知:本质不同的A只有mod个,因为A%mod相同的时候,在B不变时,上式值相同。另本质不同的B也只有9*mod种(实际没有这么多),因为lb和B%mod相同的时候,在A不变时,上式值相同。我们的目标是让上式=0。因此可以先枚举本质不同的A,最多mod种,然后枚举B的长度lb,最多9种,然后我们就可以推算出B%mod的值,即可以O(1)查询是否有合法方案。只要存在一个A,没有合法的B使得上式=0,则A必胜。

Code:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int inf = 2147483647;
 
int upper(int a, int b, int mod) {
  int rt = b / mod * mod + a % mod;
  if (rt < b) rt += mod;
  return rt;
}
int main() {
  int t;
  int A, B, C, D, mod;
  scanf("%d", &t);
  while (t--) {
    scanf("%d%d%d%d%d", &A, &B, &C, &D, &mod);
    bool win = false;
    for (int i = 0; i < mod; i++) {
      if (upper(i, A, mod) > B) continue;
 
      bool failed = false;
      for (int t = 1; t <= D; t *= 10) {
        int least = max(t, C);
        int best = min(10 * t - 1, D);
        if (least > best) continue;
 
        int rest = mod - i * 10 % mod * t % mod;
        if (upper(rest, C, mod) <= D) {
          failed = true;
          break;
        }
      }
      if (!failed) {
        win = true;
        break;
      }
    }
    if (win) printf("WIN\n");
    else printf("LOSE\n");
  }
  return 0;
}

版权声明:本文为博主原创文章,转载的话评论区留个名就OK辣 https://blog.csdn.net/calabash_boy/article/details/79954339

埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛F题 1+2=3?

题目链接:https://www.nowcoder.com/acm/contest/91/F题意:求第N个符合条件X^2X=3X的X。N&amp;lt;=10的12次方。解题思路:我刚开始想到最粗暴的...
  • weixin_36416680
  • weixin_36416680
  • 2018-04-16 11:01:00
  • 50

埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛

B - 合约数 思路: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;n...
  • hnust_Derker
  • hnust_Derker
  • 2018-04-15 19:06:59
  • 121

埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛A题Wasserstein Distance

题目链接:https://www.nowcoder.com/acm/contest/91/A题意:给两组数据,求把A变成B状态需花费的最小体力。思路:s=s+abs(a[i]-b[i]);a[i+1]...
  • weixin_36416680
  • weixin_36416680
  • 2018-04-15 20:11:56
  • 33

第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 B 合约数(启发式合并)

链接:https://www.nowcoder.com/acm/contest/91/B来源:牛客网题目描述 在埃森哲,员工培训是最看重的内容,最近一年,我们投入了 9.41 亿美元用于员工培训和职...
  • lzc504603913
  • lzc504603913
  • 2018-04-15 19:17:02
  • 49

【牛客网】【埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛】L—K序列【动态规划】

题目链接:L—K序列题解:for一遍数组,temp[i]表示:不包括当前for到的点,序列和为i的最长长度。然后for一遍0-k,对dp[ (j+num[i])%k ]进行更新,dp[j]是包括当前点...
  • gymgym1212
  • gymgym1212
  • 2018-04-15 18:46:39
  • 160

埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛E题小Y吃苹果

链接:https://www.nowcoder.com/acm/contest/91/E题意:小Y买了很多苹果,但他很贪吃,过了几天一下就吃剩一只了。每一天小Y会数出自己的苹果个数X,如果X是偶数,他...
  • weixin_36416680
  • weixin_36416680
  • 2018-04-15 20:20:20
  • 29

埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 F-1+2=3?

链接:https://www.nowcoder.com/acm/contest/91/F来源:牛客网题目描述 小Y在研究数字的时候,发现了一个神奇的等式方程,他屈指算了一下有很多正整数x满足这个等式...
  • albertluf
  • albertluf
  • 2018-04-15 16:46:44
  • 111

2017年上海金马五校赛 解题报告

Before这个比赛有一个资格赛,但是跟蓝桥杯决赛冲突了所以不能参加,没想到老师帮我们申请了参赛资格,意外之喜。 因为题目实在太多了,代码就不贴在博客里了。。。想看代码的童鞋可以去github上看看...
  • woshirenNo01
  • woshirenNo01
  • 2017-06-04 09:33:52
  • 917

小Y吃苹果 --埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛

链接:https://www.nowcoder.com/acm/contest/91/E来源:牛客网时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 131072K,其他语言262144K...
  • zitian246
  • zitian246
  • 2018-04-16 17:00:22
  • 13

(补题心路)——“盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛

不知道该摆出什么表情 别的比赛要脑细胞,这比赛要命
  • Dsaitou
  • Dsaitou
  • 2017-07-10 16:21:36
  • 273
收藏助手
不良信息举报
您举报文章:上海高校金马五校赛 D 数字游戏
举报原因:
原因补充:

(最多只允许输入30个字)