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;
    
    }
  • 相关阅读:
    第八周课程总结&实验报告(六)
    第七周课程总结&实验报告(五)
    第六周&java实验报告四
    第五周课程总结&试验报告(三)
    第四周作业
    2019春总结作业
    第二周基础作业
    第三周作业
    2019期末总结
    第十四周课程总结 & 实验报告
  • 原文地址:https://www.cnblogs.com/cocacolalala/p/11647544.html
Copyright © 2011-2022 走看看