原题链接

#913.历法

题意

给定 m m m, d d d, w w w, 代表某国每一年都有 m m m 个月 , 每个月有 d d d 天。每个星期有 w w w 天。每年的第一天也是一个星期的第一天。
求出有多少对 ( x , y ) (x,y) (x,y) , 满足 x < y x<y x<y 且 第 y y y 个月的第 x x x 天和第 x x x 个月的第 y y y 天在一个星期内是同一天。
数据范围: 1 ≤ m , d , w ≤ 1 0 9 1\leq m,d,w\leq10^9 1≤m,d,w≤109

题解

第 i i i 个月第 j j j天的星期数可以表示为 ( ( i − 1 ) × d + j ) m o d w ((i-1)\times d+j)\mod w ((i−1)×d+j)modw
第 j j j 个月第 i i i天的星期数可以表示为 ( ( j − 1 ) × d + i ) m o d w ((j-1)\times d+i)\mod w ((j−1)×d+i)modw
可以化为如下形式:
i × ( d − 1 ) + i + j + d i \times (d-1)+i+j+d i×(d−1)+i+j+d
j × ( d − 1 ) + i + j + d j \times (d-1)+i+j+d j×(d−1)+i+j+d
所以只需要找出所有 ( i , j ) (i, j) (i,j) 满足 i < j i<j i<j 且 i × ( d − 1 ) ≡ j × ( d − 1 ) ( m o d w ) i \times (d-1) \equiv j \times (d-1) (\mod w) i×(d−1)≡j×(d−1)(modw)
由公式 a ≡ b ( m o d c ) a \equiv b (\mod c) a≡b(modc) 且 g = g c d ( a , b , c ) g=gcd(a,b,c) g=gcd(a,b,c),则 a g ≡ b g ( m o d c g ) \frac{a}{g} \equiv \frac{b}{g} (\mod \frac{c}{g}) ga​≡gb​(modgc​) 得 i × ( d − 1 ) m o d w i \times (d-1) \mod w i×(d−1)modw 的循环周期为 w g c d ( w , m i n ( d , m ) ) \frac{w}{gcd(w,min(d,m))} gcd(w,min(d,m))w​

代码

#include <bits/stdc++.h>using namespace std;#define int long longint m, d, w;int get(int x) {return x * (x-1) / 2;
}void slv() {cin >> m >> d >> w;int res = 0;m = min(m, d);d --;int cir; cir = w / __gcd(w, d);int p = m/cir, q = (m%cir + cir)%cir; cout << (cir - q) * get(p) + q * get(p + 1) << '\n';
}signed main() {int _; cin >> _;while ( _--)slv();
}

代码源每日一题-历法(结论/数学)相关推荐

  1. 代码源每日一题-宝箱(贪心/思维)

    题目链接:宝箱 - 题目 - Daimayuan Online Judge 原题链接:C - Gacha (atcoder.jp)(没英文题面哇...) 大致题意: 坐标轴上有  个钥匙和  个宝箱, ...

  2. java 栈和队列实现迷宫代码_LeetCode每日一题--剑指 Offer 09. 用两个栈实现队列(Java)

    DailyChallenge 剑指 Offer 09. 用两个栈实现队列 Easy20200630 Description 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTai ...

  3. 【8.6】代码源 - 【前缀集】【矩阵游戏】【谁才是最终赢家?】【放置多米诺骨牌】

    #930. 前缀集 题意:给定两个长为 n ( 1 ≤ n ≤ 5 × 1 0 5 ) n(1\leq n\leq 5\times 10^5) n(1≤n≤5×105) 的序列 a i , b i a ...

  4. 2022-04-19每日刷题打卡

    2022-04-19每日刷题打卡 代码源--每日一题 走不出的迷宫 - 题目 - Daimayuan Online Judge 有一个 H 行 W 列的迷宫(行号从上到下是 1−H,列号从左到右是 1 ...

  5. 2022-04-14每日刷题打卡

    2022-04-14每日刷题打卡 代码源--每日一题 上帝的集合 - 题目 - Daimayuan Online Judge 题目描述 现在上帝有一个空集合,现在他命令你为他执行下列三种操作 n 次, ...

  6. 2022-04-01每日刷题打卡

    2022-04-01每日刷题打卡 代码源--每日一题 Lusir的游戏 - 题目 - Daimayuan Online Judge Lusir 正在玩一个古老的基于 DOS 的游戏. 游戏中有 N+1 ...

  7. 【8.8】代码源 - 【不降子数组游戏】【最长上升子序列计数(Bonus)】【子串(数据加强版)】

    #886. 不降子数组游戏 题意: 题解:(分块/三分) 代码源每日一题Div1 不降子数组游戏 思路:首先,先手选了一个点,后手必定要选 L,RL,RL,R 其中的一个,这样才能使分数最大.那么把我 ...

  8. 2022-03-31每日刷题打卡

    2022-03-31每日刷题打卡 代码源--每日一题 完美数 - 题目 - Daimayuan Online Judge 对于给定的数字 a , b ,当整数 n 在十进制下的所有数位都为 a 或 b ...

  9. 2022-04-27每日刷题打卡

    2022-04-27每日刷题打卡 代码源--每日一题 素数之欢 - 题目 - Daimayuan Online Judge 现给定两个 四位素数 a,b. 你可以执行多次下面的操作: 修改数字 a 的 ...

最新文章

  1. 用html编写一个贪吃蛇,HTML编写的贪吃蛇代码
  2. DIV+CSS常见问题的14条原因分析
  3. Express中错误处理中间件的使用
  4. 选了combobox里的选项后没激发change事件_stata 事件分析法
  5. python 中单线程 与多线程 与多进程的性能分析
  6. c#执行多句oracle,C#一次执行多条SQL语句,Oracle11g数据库
  7. Error Code : 1064 You have an error in your SQL syntax; check the manual that corresponds to your My
  8. 【系统架构】VC 开发辅助工具大收集
  9. c语言20%3c=10,C语言  练习题(2)
  10. 小米8绑定账号和设备验证失败_网赚项目刚需账号答疑大集合!
  11. linux如何安装ut880驱动下载,ut880驱动
  12. php 连接局域网打印机,如何添加局域网打印机?局域网打印机添加方法介绍
  13. 正义网评咪蒙公号注销:自媒体创作须守住道德底线
  14. 前端 psd切片生成html.css,1个将PSD网页模板切片输出为DIV+CSS架构网页教程
  15. 电脑开启后桌面图标不显示
  16. 【大数据技术详解】搭建redis集群服务的步骤和配置以及解决创建集群时会遇到的错误:NodeX replied with error:ERRInvalid node address specified
  17. Schizophrenia Bulletin: 精神分裂症的潜在临床-结构维度
  18. 三国志战略版:Daniel_S8军争地利_刘张开荒实录三-至开七
  19. FileNotFoundError: [Errno 2] No such file or directory: 'XXX' 的解决方法
  20. Linux C获取本机IP

热门文章

  1. ARM 指令集的基础指令
  2. 在 macOS 上安装 AWS CLI
  3. 《电力电子技术》课程教学大纲
  4. 看Kendo UI文档
  5. Dependency analysis in Scripted
  6. 规划网站的目录结构时通常遵循一定的规则
  7. c# image转换为bitmap_WPF将BitmapImage图片对象转换为Bitmap图片对象
  8. 任何用户的电子邮件一定在自己的计算机上,信息技术判断题
  9. 131、基于51单片机智能电子秤HX711仿真设计
  10. 流媒体分析之srt 协议libsrt 实现