• Codeforces Round #475 (Div. 2) C


    等比数列求和一定要分类讨论!!!!!!!!!!!! 

     1 #include<bits/stdc++.h>
     2 #define LL long long
     3 #define fi first
     4 #define se second
     5 #define mk make_pair
     6 #define pii pair<int,int>
     7 #define ull unsigned long long
     8 using namespace std;
     9 
    10 const int N=1e6+7;
    11 const int M=100+7;
    12 const int inf=0x3f3f3f3f;
    13 const LL INF=0x3f3f3f3f3f3f3f3f;
    14 const int mod=1e9 + 9;
    15 
    16 LL n, a, b, k;
    17 char s[N];
    18 
    19 LL q_pow(LL a, LL b) {
    20     LL ans = 1;
    21     while(b) {
    22         if(b & 1) ans = ans * a % mod;
    23         a = a * a % mod; b >>= 1;
    24     }
    25     return ans;
    26 }
    27 
    28 LL ivn(LL x) {
    29     return q_pow(x, mod - 2);
    30 }
    31 
    32 
    33 int main() {
    34 
    35     scanf("%lld%lld%lld%lld", &n, &a, &b, &k);
    36     scanf("%s", s);
    37     LL w = q_pow(b, k) * ivn(q_pow(a, k)) % mod;
    38     w = (w + mod) % mod;
    39 
    40     LL ans = 0;
    41     LL cnt = (n + 1) / k;
    42 
    43     for(LL i = 0; i < k; i++) {
    44         LL ret1 = q_pow(a, n - i) * q_pow(b, i) % mod;
    45         LL ret2 = (1 - q_pow(w, cnt) + mod) % mod;
    46         LL ret3 = ivn((1 - w + mod) % mod);
    47         LL ret = (((ret1 * ret2) % mod) * ret3) % mod;
    48         if(w == 1) ret = (ret1 * cnt) % mod;
    49         if(s[i] == '-') ret = -ret;
    50         ans = (ans + ret + mod) % mod;
    51     }
    52     printf("%lld
    ", ans);
    53     return 0;
    54 }
    55 /*
    56 */
  • 相关阅读:
    Bean
    DI
    require import export
    JSON转js
    vue路由相关
    JS引号区别
    Go语言系列之标准库strconv
    Go语言系列之标准库flag
    Go语言系列之并发编程
    Go语言系列之自定义实现日志库
  • 原文地址:https://www.cnblogs.com/CJLHY/p/8873939.html
Copyright © 2020-2023  润新知