2 条题解
-
1
我的代码和楼下@ yaosicheng 是差不多滴,这里我的代码附上了注释(思路),可放心食用。
#include<bits/stdc++.h> #define endl '\n' using namespace std; /* 跟踪一开始位置为d的小盆友 第一轮:d -> (d+m)%n 第二轮: (d+m)%n -> ((d+m)%n+m)%n 第10^k轮:(((...(d+m)%n+m)+m)...)%n) =>(d+m*10^k)%n =>(d%n+m%n*10^k%n)%n */ int n,m,k,x; int ksm(int a,int b,int p){ int mul=1; while(b){ if(b&1)mul=mul*a%p; a=a*a%p; b>>=1; } return mul; } int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin>>n>>m>>k>>x; cout<<(x%n+m%n*ksm(10,k,n)%n)%n<<endl; return 0; }
-
1
#include<iostream> #include<cstdio> #include<algorithm> #include<cstdlib> #include<cmath> #include<cstring> using namespace std; int n,m,k,x; int ksm(int a,int b) { int re=1; int t=a; while(b) { if(b&1) re=re*t%n; t=t*t%n; b>>=1; } return re; } int main() { cin>>n>>m>>k>>x; cout<<(x%n+m%n*ksm(10,k)%n)%n; return 0; }
- 1
信息
- ID
- 44
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 13
- 已通过
- 11
- 上传者