D - Marking
D - Marking
https://atcoder.jp/contests/abc290/tasks/abc290_d
思路
https://zhuanlan.zhihu.com/p/607818729
x即为最小循环节的长度
即经过x次mark, mark的位置又回到了 0 位置。
如下为x最小循环的推导。
第k次所处的位置 由两部分决定
(1)k次所处在第几个循环节 loop_times = k / x
(2)k次所处第一个循环节内部相对位置 offset = k % x
此相对位置对应的实际位置 = offset * D,
offset为循环节内,第几次移动, 每移动一次要在当前位置上加上D
所以实际位置 = offset * D
为了避免溢出 需要 % n
k次实际位置 = loop_time + offset*D%n = k / x + (k % x)*D%n
第一循环节内的实际位置 0, D, 2D,... xD
第二循环节内的实际位置 0+1, D+1, 2D+1,... xD+1
。。。。。
reference:
https://atcoder.jp/contests/abc290/submissions/39016002
Code
https://atcoder.jp/contests/abc290/submissions/39219152
int t; int main() { cin >> t; REP(i, t){ int n, d, k; cin >> n >> d >> k; k--; long long nd_gcd = __gcd(d, n); long long l = n / nd_gcd; long long loop_pos = (k%l) * d % n; long long loop_times = k / l; cout << loop_pos + loop_times << endl; } return 0; }
出处:http://www.cnblogs.com/lightsong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
2019-02-26 Redux中间件组合方法
2018-02-26 State management(状态管理)
2017-02-26 Content Security Policy介绍
2015-02-26 Cross-Site Scripting(XSS)的类型