zoukankan      html  css  js  c++  java
  • Wannafly挑战赛18 B

    思路:化简公式,Pn 表示 进行n 次操作,有奇数次1的概率

    Pn = (1 - x) * Pn - 1  + x * (1 - Pn - 1)

    得通项公式 Pn = (1 - (1 - 2 * x) ^ n) / 2

    n 很大 ,但是模数是素数,可以用费马小定理优化。

    #include<bits/stdc++.h>
    #define LL long long
    #define fi first
    #define se second
    #define mk make_pair
    #define pii pair<int, int>
    
    using namespace std;
    
    const int N = 1e6 + 7;
    const int M = 1e6 + 7;
    const int inf = 0x3f3f3f3f;
    const LL INF = 0x3f3f3f3f3f3f3f3f;
    const int mod = 1e9 +7;
    
    LL fastPow(LL a, LL b) {
        LL ans = 1;
        while(b) {
            if(b & 1) ans = ans * a % mod;
            a = a * a % mod; b >>= 1;
        }
        return ans;
    }
    
    LL a, n;
    char s[N];
    int main(){
        scanf("%lld%s", &a, s);
        int len = strlen(s);
        for(int i = 0; i < len; i++) {
            n = n * 10 % (mod - 1);
            n += s[i] - '0';
            if(n >= mod - 1) n -= mod - 1;
        }
    
        a = a * fastPow(10000ll, mod - 2) % mod;
        a = 1 - 2 * a;
        a = ((a % mod) + mod) % mod;
    
        a = fastPow(a, n);
        
        a = 1 - a;
        if(a < 0) a += mod;
        a = a * fastPow(2, mod - 2) % mod;
        printf("%lld
    ", a);
        return 0;
    }
    /*
    */
  • 相关阅读:
    java积累
    mybatis
    Netty
    springcloud相关笔记整理
    java基础总结笔记
    读书笔记-RocketMQ实战与原理解析
    读书笔记-kafka权威指南
    读书笔记-rabbitmq实战指南
    Centos 部署ServiceDesk
    IDEA将新建项目上传至GitLab
  • 原文地址:https://www.cnblogs.com/CJLHY/p/9217146.html
Copyright © 2011-2022 走看看