ACM-ICPC 2018 焦作赛区网络预赛
生活随笔
收集整理的這篇文章主要介紹了
ACM-ICPC 2018 焦作赛区网络预赛
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Give Candies
題意:有n顆糖,有n個(gè)人,按順序出列,每次隨機(jī)給那個(gè)人一些糖(至少一顆),分完為止,求有多少方案
思路:規(guī)律是2^(n?1)?根據(jù)費(fèi)馬小定理??a^(p?1)=1(mod p),?那么先n%p,然后使用快速冪;
#include<bits/stdc++.h> using namespace std; typedef long long LL; const int maxn=1e5+7,mod=1e9+7; char str[maxn]; /* LL quick_mul(LL a,LL b) {LL ans=0;while(b){if(b&1) ans=(ans+a)%mod;a=(a+a)%mod;b>>=1;}return ans; } */ LL quick_pow(LL a,LL b) {LL ret=1;while(b){if(b&1)//ret=quick_mul(ret,a);ret=(ret*a)%mod;//a=quick_mul(a,a);a=(a*a)%mod;b>>=1;}return ret; } int main() {int T;scanf("%d",&T);while(T--){scanf("%s",str);int len=strlen(str);LL num=0;for(int i=0;i<len;i++){num=(num*10+str[i]-'0')%(mod-1);}printf("%lld\n",quick_pow(2,num-1));} }?
總結(jié)
以上是生活随笔為你收集整理的ACM-ICPC 2018 焦作赛区网络预赛的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 51Nod1079 中国剩余定理
- 下一篇: Java静态方法调用非静态方法