zoukankan      html  css  js  c++  java
  • 10.09 悲伤赛

    今天比赛换了一个位置,emmm?排除风水影响……

    预计得分 100+10+??

    实际得分  60+0+30

    先说第一题,比较水

    通过组合数可以退出一个公式

    化简之后得  2^n-1*(n-2)+1

    其实我是观察找规律……

    我们把1到n的区间中任意砍一刀,固定前区的最后一个数

    例如:1 2 3 4 5

    在三和四中间砍一刀  固定三  前区的组合方式就是C2 1,后区是C2 1,相乘即可

    但是60分的原因是乘积爆long long了……

    所以还要用快速乘(注意要在快速幂里用)

    代码如下:

    #include<bits/stdc++.h>
    #include<cctype> 
    using namespace std; 
    char buf[1<<20],*p1,*p2; 
    #define GC (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<20,stdin),p1==p2)?0:*p1++) 
    template<class T> inline void read(T &n){ 
        char ch=GC;T w=1,x=0; 
        while(!isdigit(ch)){if(ch=='-') w=-1;ch=GC;} 
        while(isdigit(ch)){x=(x<<3)+(x<<1)+(ch^48);ch=GC;} 
        n=x*w; 
    }
    long long mod;
    long long anss;
    
    inline long long cheng(long long a,long long b){
        return (a*b-(long long)((long double)a/mod*b)*mod+mod)%mod;
    }
    
    long long ksm(long long a,long long b)
    {
    long long ans=1;
    while(b)
    {
    if(b&1)ans=cheng(ans,a)%mod;
    a=cheng(a,a)%mod;
    b=b/2;
    }
    return ans;
    }
     
    int main()
    {
        
    long long n;
    cin>>n>>mod;
    
    long long f=ksm(2,n-1)%mod;
    
    anss=cheng(f,(n-2))%mod;
    
    anss+=1;
    
    anss%=mod;
    
    cout<<anss;
    
    }
  • 相关阅读:
    linux下查看机器是cpu是几核
    Stylus 安装使用图解
    npm 安装配置
    vue-cli vue脚手架
    nodejs与npm
    超详细解决 PLSQL下拉数据库"空白"
    Oracle 11g Windows64位
    Mysql 5.7.x zip windows安装
    Windows下Nginx的启动、停止、重启等命令
    Swagger中最常用的几个注解
  • 原文地址:https://www.cnblogs.com/cocacolalala/p/11647544.html
Copyright © 2011-2022 走看看