Codeforces 1604D: Moderate Modular Mode

题目

题目传送门:codeforces 1604D

题目截图

样例描述

题目大意

  给定两个偶数 x x x 和 y y y,需要找到任意一个 1 ≤ n ≤ 2 × 1 0 18 1 \le n \le 2 \times 10^{18} 1≤n≤2×1018,使得 n m o d x = y m o d n n \mod x = y \mod n nmodx=ymodn。题目保证解是存在的。

题目解析

  可以先从简单的地方开始尝试,比如 n = x + y n=x+y n=x+y ,此时 ( x + y ) m o d x = y m o d ( x + y ) (x+y)\mod x= y \mod (x+y) (x+y)modx=ymod(x+y),利用模运算可以导出 y m o d x = y y \mod x = y ymodx=y,所以,当 x > y x > y x>y 时, n = x + y n=x+y n=x+y 就是问题的解。
  下面我们讨论 x ≤ y x \le y x≤y 的情况。

n m o d x n \mod x nmodx y m o d n y \mod n ymodn
n < x n \lt x n<x n n n < n \lt n <n
n > y n \gt y n>y < x ≤ y \lt x \le y <x≤y y y y
y ≥ n ≥ x y \ge n \ge x y≥n≥x n − ⌊ n x ⌋ x n-\lfloor \frac{n}{x} \rfloor x n−⌊xn​⌋x y − ⌊ y n ⌋ n y-\lfloor \frac{y}{n} \rfloor n y−⌊ny​⌋n

  可以发现只有 y ≥ n ≥ x y \ge n \ge x y≥n≥x 时,题目给出的情况才会出现,抽象成一维情况,就是在 [ x , y ] [x,y] [x,y] 中找一点 n n n 使得 n m o d x = y m o d n n \mod x = y \mod n nmodx=ymodn。

  抽象来讲,如果我们从 0 0 0 出发,每次走 x x x,走 t t t 次,再走一段较小的距离 δ ( 0 ≤ δ < x ≤ y ) \delta(0 \le \delta \lt x \le y) δ(0≤δ<x≤y),假设可以到达点 n n n, 那么 : n = t x + δ n = tx + \delta n=tx+δ ,且 n m o d x = δ n \mod x = \delta nmodx=δ 。
  若 y m o d n = n m o d x y \mod n = n \mod x ymodn=nmodx,那么考虑对于 n n n 最接近 y y y 的情况( y m o d n = y − n y \mod n = y-n ymodn=y−n),可以得出 y − t x < 2 x y -tx \lt 2x y−tx<2x,因为若 y − t x ≥ 2 x y-tx \ge 2x y−tx≥2x,我们有 y − n = y − t x − δ ≥ 2 x − δ > x ≠ δ y-n=y-tx-\delta \ge 2x - \delta \gt x \neq \delta y−n=y−tx−δ≥2x−δ>x​=δ。由于 x , y x,y x,y 都是偶数,考虑 y − t x < x y-tx<x y−tx<x的情况,则 n − t x = y − n ⇒ n = y + t x 2 = y + [ ( y − y m o d x ) / x ] ∗ x 2 = y − y m o d x 2 n-tx=y-n \Rightarrow n=\frac{y+tx}{2}=\frac{y+[(y - y \mod x) /x]*x}{2}=y - \frac{y \mod x}{2} n−tx=y−n⇒n=2y+tx​=2y+[(y−ymodx)/x]∗x​=y−2ymodx​。至此可以直接求出 n n n 的解。另一种情况( x ≤ y − t x < 2 x x \le y-tx \lt 2x x≤y−tx<2x)其实无法保证能得到解,比如,若题目给出 y − x < x y-x<x y−x<x,则仍然需要最近情况去求解,既然最近情况已经可以给出一个确定解了,对本题就不需要继续讨论了。

Code

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;int main(){LL t, x, y;cin >> t;while(t--) {cin >> x >> y;if(x > y) cout << x + y << endl;else cout << y - (y % x) / 2 << endl;}return 0;
}

Codeforces-1604 D: Moderate Modular Mode相关推荐

  1. Moderate Modular Mode %,取模运算性质,数轴,思维

    题意: 给两个偶数x和y,找到n满足n%x == y%n 思路: 分类找特殊情况.一般而言我们猜测n%x=y%n这个式子的值是0或者y之类比较特殊的,然后再猜测n的表达式 x==y,则n取x x> ...

  2. Moderate Modular Mode

    YouKn0wWho has two even integers xx and yy. Help him to find an integer nn such that 1≤n≤2⋅10181≤n≤2 ...

  3. CF1603B Moderate Modular Mode

    题目大意 给定两个偶数 x , y x,y x,y. 求一个 n ∈ [ 1 , 2 × 1 0 18 ] n \in [1,2\times10^{18}] n∈[1,2×1018] 满足 n m o ...

  4. Codeforces1603 B. Moderate Modular Mode(数学)

    题意: 解法: n % x = y % n 优 先 考 虑 结 果 为 特 殊 值 , 如 0 和 y . n % x = y % n = 0 , 当 x = = y 时 , n 取 x 成 立 . ...

  5. Codeforces Round #752 (Div. 2)部分题解(A ~ D)

    A. Era (模拟) 比赛链接:https://codeforces.com/problemset/problem/1604/A 题目大意 给出长度为 n n n的数组 a a a,每次我们可以任意 ...

  6. codeforces round #752

    题目链接 A. Era typedef long long ll;void solve(){ll n;scanf("%lld",&n);ll ans = 0;ll x,y; ...

  7. CodeForces - 1359E Modular Stability(组合数学)

    题目链接:点击查看 题目大意:给出一个 n 和 k ,要求构造一个长度为 k 的严格递增数组 a[ i ] ,且 1 <= a[ i ] <= n ,满足任意整数 x ,对下列的等式恒成立 ...

  8. CodeForces 375D Tree and Queries

    传送门:https://codeforces.com/problemset/problem/375/D 题意: 给你一颗有根树,树上每个节点都有其对应的颜色,有m次询问,每次问你以点v为父节点的子树内 ...

  9. 「日常训练」Bad Luck Island(Codeforces Round 301 Div.2 D)

    题意与分析(CodeForces 540D) 是一道概率dp题. 不过我没把它当dp做... 我就是凭着概率的直觉写的,还好这题不算难. 这题的重点在于考虑概率:他们喜相逢的概率是多少?考虑超几何分布 ...

最新文章

  1. 使用datatable 将测试数据与业务分离
  2. golang 接口_「实战」助力数据库开发之接口篇 - Golang 连接 Greenplum
  3. Android中个人推崇的数据库使用方式
  4. spring配置详解-属性注入(构造函数)
  5. 目标检测——从RCNN到Faster RCNN 串烧
  6. 洛谷P1173:[NOI2016] 网格(tarjan、离散化)
  7. 管理软件实施(4)——如何编写售前解决方案
  8. 带撤销贪心——cf1148F好题
  9. 超越Tiny-YOLO V4,全新设计轻量化YOLO模型实现边缘实时检测!!!
  10. 解决wget下载过慢的问题
  11. 利用LU分解法的多项式拟合实验
  12. 如何用MAYA 制作人物动画 使人物动作更加真实流畅
  13. android版本4.4.2导航,天敏D8+_rk3288_Android_4.4.2_kiui7_蓝光导航极速版
  14. 流水线中数据相关的理解(RAW、WAR和WAW)
  15. java 前置系统报文通讯方式_银行核心与前置系统的区别
  16. 五. Tomcat 常见问题解决及面试题
  17. 关于PS新建(PS如何新建)
  18. 用这个工具可以批量分割视频
  19. DTU连接自建MQTT服务器
  20. 【java】对URL中的中文和符号进行UrlEncode转码

热门文章

  1. 已解决 0x0000XXXX (ucrtbase.dll) (XXX.exe 中)处有未经处理的异常: 请求了严重的程序退出。
  2. 机器学习之利用SMO算法求解支持向量机—基于python
  3. 5分钟商学院工具篇读书笔记摘要(一)思考工具-5W2H工作法
  4. vmware安装centos
  5. snort 检测nmap_Snort***检测系统安装与配置
  6. Uni-app 原生app 云打包(安卓篇)
  7. 手把手教你爬取PC端『某酷视频』个人历史播放数据,并可视化展示
  8. 单细胞测序之基本的数据处理基本流程
  9. npm run 时报错 failed to parse json
  10. 如何搭建商超积分商城系统框架