[ABC290D] Marking
题意简述
接受三个参数
第一步,将点
此后,你要进行如下操作:
。- 如果点
已经被标记, 。、 - 标记点
。
显然最多进行
题目解析
我们这里称
我们发现这种标记方法的间距始终是相同的,为
那么仅存在某一轮之后与任意起点重合。并且同理可以知道,从本次重合到下一次,经过的轮数相同。具体地说,
所以我们就从最开始的一次重合举例。经过多少步能重合呢?其实就是解同余方程
不重合的时候,就是前进
一个需要注意的点是:第一次还有一个把
单次询问复杂度
代码实现
#include<cstring>
#include<algorithm>
#include<iostream>
#define R myio::read_int()
//也就是说之后的 R 代表的是读入的返回值
//这里省略了快读
using namespace std;
int T,N,K,D;
signed main(){
T=myio::read_int();
while(T--) {
N=R,D=R,K=R-1;
int ans1=K*D%N; //这一部分表示正常前进的
int ans2=K/(N/__gcd(N,D));
//每 N/__gcd(N,D) 步重合一次,那么就重合了 K/(N/__gcd(N,D)) 次。
myio::print_int(ans1+ans2);
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律