zoukankan      html  css  js  c++  java
  • [BZOJ1008][HNOI2008]越狱 组合数学

    http://www.lydsy.com/JudgeOnline/problem.php?id=1008

    正着直接算有点难,我们考虑反着来,用全集减补集。

    总的方案数为$m^n$。第一个人有$m$种可能,第二个人有$m-1$种可能,第三个人有$m-1$种可能……发现补集就是$m*(m-1)^{n-1}$。用快速幂搞搞就行了。

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 using namespace std;
     5 typedef long long ll;
     6 const int mod=100003;
     7 int quick_pow(int x,ll y){
     8     int base=x,sum=1;
     9     while(y){
    10         if(y&1) sum=(ll)sum*base%mod;
    11         base=(ll)base*base%mod;
    12         y>>=1;
    13     }
    14     return sum;
    15 }
    16 int main(){
    17     ll n,m;
    18     scanf("%lld%lld",&m,&n);
    19     m%=mod;
    20     printf("%d
    ",(quick_pow(m,n)-m%mod*quick_pow(m-1,n-1)%mod+mod)%mod);
    21     return 0;
    22 } 
  • 相关阅读:
    进程和线程
    分治算法
    MySQL-IN和Exists区别
    Java-悲观锁和乐观锁
    Spring如何解析Dubbo标签
    Java平台标准版本
    java常用的框架
    状态码
    算法
    java.c++.c#.c的区别
  • 原文地址:https://www.cnblogs.com/halfrot/p/7449941.html
Copyright © 2011-2022 走看看