zoukankan      html  css  js  c++  java
  • BZOJ1008 [HNOI2008]越狱 (快速幂,组合)

    题目大意

    (m)种数字组成的长度为(n)的序列的种数,序列中至少有一段连续的数字

    分析

    用可重排列的种数减去,相邻数字互不相同的序列种数

    考虑相邻互不相同,第一个元素有(m)种可能,后面每个元素不能和它左边的那个数一样,有(m-1)种可能

    即$$m^n - m(m-1)^{n-1}$$

    代码

    #include<iostream>
    #include<cmath>
    #include<cstdio>
    #define LL long long 
    
    using namespace std;
    const LL p = 100003;
    
    LL pw(LL a,LL b){
       LL t = 1;
       for (;b;b >>= 1) {
           if (b & 1) t = t * a % p;		
    	   a = a % p * a % p;
       }
       return t;
    }
    
    int main(){
    	
    	LL n,m;
    	
    	scanf("%lld%lld",&m,&n);
    	printf("%lld
    ",(p + pw(m,n) - m  * pw(m - 1,n - 1) % p) % p);
    
    	return 0;
    }
    
  • 相关阅读:
    函数重载和函数指针在一起
    Uva
    Uva
    Uva
    Uva
    Uva
    CCPC-Wannafly-day5
    CCPC-Wannafly-day3
    CCPC-Wannafly-day2
    CCPC-Wannafly-Winter 2020.01.12总结
  • 原文地址:https://www.cnblogs.com/bobble/p/9448187.html
Copyright © 2011-2022 走看看