题意

给一个圆,圆上共有nk​nk​nk​个点,分别编号为0​0​0​~nk−1​nk-1​nk−1​,任意两个相邻的点距离1km​1km​1km​,其中在编号为kt+1​kt+1​kt+1​的点上有快餐店.
现在有一个人一开始在编号为s​s​s​的点,他每轮跑l​l​l​ kmkmkm​,再次回到s​s​s​时停止跑.
由于某种神奇的因素,他忘记了s​s​s​和l​l​l​的值,但他知道一开始s​s​s​处距离最近的饭店的距离为a​a​a​ kmkmkm,跑了l​l​l​ kmkmkm后距离最近的饭店为b​b​b​ kmkmkm,先让你求最小的跑步轮次x​x​x​和最大的跑步轮次y​y​y​.

做法

可以列出下列方程组:
s=1±a(modk)​s = 1 \pm a \pmod k ​s=1±a(modk)​
s+l=1±b(modk)​s + l = 1 \pm b \pmod k ​s+l=1±b(modk)​
tl=0(modnk)​t l = 0 \pmod {nk}​tl=0(modnk)​

其中t​t​t​为满足方程的最小正整数解.

显然有t=nk(l,nk)​t = \frac{nk}{(l,nk)}​t=(l,nk)nk​​,而l≡±a±b(modk)​l \equiv \pm a \pm b \pmod k​l≡±a±b(modk)​,只有4n​4n​4n​种取值.枚举求gcd​gcd​gcd​即可.

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define pb push_back
const int N = 1e3 + 7;
const ll mod = 1e9 + 7;int main() {#ifdef localfreopen("in.txt", "r", stdin);
#endifios::sync_with_stdio(false);cin.tie(0), cout.tie(0);ll n, k, a, b;cin >> n >> k >> a >> b;ll temp = n * k, t[4] = {a + b, a - b, b - a, -a - b};ll mx = LLONG_MIN, mi = LLONG_MAX;for(int i = 0; i < 4; i++) {ll tt = t[i];for(int j = 0; j < n; j++, tt += k) {mx = max(mx, abs(__gcd(tt, temp)));mi = min(mi, abs(__gcd(tt, temp)));}}cout << temp / mx << ' ' << temp / mi << endl;return 0;
}

Codeforces Round #549(div2) D.The Beatles(数学)相关推荐

  1. Codeforces Round #549 (Div. 2) D. The Beatles

    D. The Beatles time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  2. Codeforces Round #549 (Div. 2) 1143D. The Beatles

    D. The Beatles time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  3. codeforces Round#429 (Div2)

    2017-08-20 10:00:37 writer:pprp 用头文件#include <bits/stdc++.h>很方便 A. Generous Kefa codeforces 84 ...

  4. Codeforces Round#310 div2

    C题:这题说的是套娃,如果做题的时候知道是套娃,那就好理解多了 规则1:套娃A可以放到套娃B里面,当且仅当套娃B没有放在其他套娃里面 规则2:套娃A放在套娃B里面,且套娃B没有放在其他套娃里面,那么可 ...

  5. Codeforces Round #359 div2

    Problem_A(CodeForces 686A): 题意: \[ 有n个输入, +\space d_i代表冰淇淋数目增加d_i个, -\space d_i表示某个孩纸需要d_i个, 如果你现在手里 ...

  6. Codeforces Round #652 div2 总结 端午节前小结

    2020.6.24 连着三天熬夜和一连串要处理的事情已然让我的身体有点吃不消.我只是喜欢想题的那种冥想思路开阔的感觉,但是熬夜还是不能行的.端午节前就暂时不碰竞赛了,昨天晚上算是打完了最后一场比赛.今 ...

  7. Codeforces Round 361 div2

    雪崩,全错掉了GG.前两道题相对之前的难度大一点啊,不过A题有个循环应该是从0开始而不是1开始这样的低级错误不应该犯.B题差不多是一个BFS,但是我当时始终绕着最短路径写来写去,一直各种TLE与WA. ...

  8. Codeforces Round #360(div2)

    考完试的晚上,打了场codeforces,主要感觉由于睡眠不够,最后差了点劲啊,C题基本上都过了,但忙中出错最后把数组调小易于debug后再提交又忘记改回来了,看到Runtime Error自己竟没反 ...

  9. codeforces round 416 div2补题

    第一题,水题 A. Vladik and Courtes #include<bits/stdc++.h> using namespace std; int main() {long lon ...

最新文章

  1. linux驱动:i2c驱动(二)
  2. .git文件夹_Git服务器安装- windows
  3. 指数基金日涨跌幅python_看懂巴菲特推荐的指数基金定投,Python验证
  4. CopyOnWriteArrayList源码解析
  5. 列表和range、元组
  6. Spring MVC:带有CNVR卷的REST应用程序。 1个
  7. Oracle Sql 胡乱记
  8. C语言多维数组与多级指针
  9. 训练日志 2018.12.16
  10. createSQLQuery与createQuery的区别
  11. windows安装npm教程
  12. 取出字符串中的数字部分
  13. PHP 动态获取数组索引的值
  14. Mismatch between array dtype (‘<U40‘) and format specifier (‘%.18e‘)
  15. 基于Java毕业设计幼儿园教育管理信息系统演示2021源码+系统+mysql+lw文档+部署软件
  16. win10 svn无法成功完成操作,因为文件包含病毒或潜在的垃圾软件
  17. Windows10磁盘分区和扩展
  18. 小写金额转换成大写金额
  19. C# Panel半透明
  20. 运筹说 第92期|爱思唯尔“高被引学者“

热门文章

  1. win10 汇编工具 em8086安装
  2. WINE 安装使用钉钉 Dingtalk
  3. 中小企业网上手机订货下单软件|移讯云订货通订单管理系统后台功能模块
  4. html中的em等于多少像素,CSS中的em运用详解,1em等于多少像素?
  5. 等级保护测评常见的疑难杂症,这篇文章一招制胜
  6. 实践与共享:一键永久激活 Windows Server 2008 和 Windows Server 2008 R2 的MAK密钥
  7. 让0球平局怎么算_格斗游戏连续平局的下场,直接挑战最终BOSS游戏厅老板
  8. c语言中的下标变量是什么,c语言中数组的下标从什么开始?
  9. QT打包时系统提示 Cannot find Visual Studio redist directory
  10. 来了!STM32移植LuatOS,潘多拉示例全新教程