当前位置:   article > 正文

1290. 越狱 (逆向思维)

1290. 越狱 (逆向思维)

分析:正向很难考虑,考虑逆向

逆向:有m种宗教,n个犯人

犯人所有宗教信仰的情况:m^n (m*m*m*...一共n次)

犯人宗教信仰不会越狱的情况:

  • 第1个犯人可选宗教数为m
  • 第二个犯人可选宗教数为m-1(左边选了什么,当前不能选...)

综上:所有会发生越狱的情况=所有情况-不发生越狱

=m^n-(m*(m-1)^(n-1))

  1. #include <iostream>
  2. #include <algorithm>
  3. using namespace std;
  4. const int mod=100003 ;
  5. typedef long long ll;
  6. ll qmi(ll a,ll b)
  7. {
  8. ll res=1;
  9. while(b)
  10. {
  11. if(b&1)
  12. res=1ll*res*a%mod;
  13. b>>=1;
  14. a=1ll*a*a%mod;
  15. }
  16. return res%mod;
  17. }
  18. int main()
  19. {
  20. ll m,n;
  21. cin>>m>>n;
  22. ll a=qmi(m,n);
  23. ll b=1ll*m*qmi(m-1,n-1)%mod;
  24. cout<<(a-b+mod)%mod<<endl;
  25. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/619382
推荐阅读
相关标签
  

闽ICP备14008679号