NOIP2013 转圈游戏 解题报告(快速幂)

在线评测:

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;
}

你可能感兴趣的:(NOIP2013,快速幂)