记录编号 189711 评测结果 AAAAAAAAAA
题目名称 [HNOI 2008] 越狱 最终得分 100
用户昵称 Gravatarliu_runda 是否通过 通过
代码语言 C++ 运行时间 0.009 s
提交时间 2015-09-29 10:24:32 内存使用 0.31 MiB
显示代码纯文本
  1. #include<iostream>
  2. #include<cstdio>
  3. using namespace std;
  4. //result = (m%100003)^n %(100003) - m*(m-1)^(n-1)%100003
  5. //a^(2n)%c = (a^n%c)^2%c
  6. // a*b % c = a%c * b%c % c
  7. //a^(2n+1)%c = a^n * a^n *a % c = (a^n%c)^2%c * a%c % c
  8. long long m;
  9. long long resulta(long long n){
  10. if(n==1)
  11. return m;
  12. else if(n&1){
  13. long long r = resulta(n/2);
  14. r *= r;
  15. r %= 100003;
  16. r = r*m%100003;
  17. return r;
  18. }else{
  19. long long r = resulta(n/2);
  20. r *= r;
  21. r %= 100003;
  22. return r;
  23. }
  24.  
  25. }
  26. long long resultb(long long n){
  27. m--;
  28. return resulta(n-1)*(m+1)%100003;
  29. }
  30. int main(){
  31. freopen("prisona.in","r",stdin);
  32. freopen("prisona.out","w",stdout);
  33. long long n;
  34. cin>>m>>n;
  35. m%=100003;
  36. int a = resulta(n),b = resultb(n);
  37. if(a>b)cout<<a-b;
  38. else cout<<100003+a-b;
  39. fclose(stdin);fclose(stdout);
  40. return 0;
  41. }