在线评测:
http://codevs.cn/problem/3285/
整体思路:
这道题是我做了这么多年的noipD1T1唯一感觉不算水题的题,开始一看这题被吓到了,数据都分的有模有样,我还以为是把T3换到了T1的位置,后来仔细看了看,快速幂取模不就好了么,我们可以推出答案是这个(x + 10^k*m) %n 然后根据取模的性质,在快速幂里面取模就行了,正确性显而易见,代码只有10多行。
失误之处:
开始有点被高深的题意吓到了,平时还是应该多冷静仔细一些。
体会心得:
考试要放平心态,既然明白自己的实力,就要知道,你做不出来的,全省能做出来的也没几个,一定要放平心态,用平稳的心态去得尽可能多的分数。
AC代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include
using
namespace
std;
int
n,m,k,x;
int
ksm(
int
x,
int
y)
{
if
(y == 1)
return
x;
int
tp = ksm(x,y >> 1) % n;
if
(y & 1)
return
(((tp * tp) % n) * x) % n;
return
(tp * tp) % n;
}
int
main()
{
scanf
(
"%d%d%d%d"
,&n,&m,&k,&x);
printf
(
"%d\n"
,(x + (ksm(10,k) * m) % n) % n);
return
0;
}
|