P3414 SAC#1 - 組合數
阿新 • • 發佈:2017-05-06
logs sim article ostream while color fast iostream str
題目背景
本題由世界上最蒟蒻最辣雞最撒比的SOL提供。
寂月城網站是完美信息教室的官網。地址:http://191.101.11.174/mgzd 。
題目描述
辣雞蒟蒻SOL是一個傻逼,他居然覺得數很萌!
今天他萌上了組合數。現在他很想知道simga(C(n,i))是多少;其中C是組合數(即C(n,i)表示n個物品無順序選取i個的方案數),i取從0到n所有偶數。
由於答案可能很大,請輸出答案對6662333的余數。
輸入輸出格式
輸入格式:輸入僅包含一個整數n。
輸出格式:輸出一個整數,即為答案。
輸入輸出樣例
輸入樣例#1:3輸出樣例#1:
4
說明
對於20%的數據,n <= 20;
對於50%的數據,n <= 1000;
對於100%的數據,n <= 1 000 000 000 000 000 000 (10^18)
一開始傻乎乎的求組合數
後來才發現原來求一下2^n-1就好,,
註意要開long long
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #define ll long long 6 usingnamespace std; 7 const int mod=6662333; 8 ll fastpow(ll m,ll p) 9 { 10 ll ans=1; 11 ll base=m%mod; 12 while(p!=0) 13 { 14 if(p%2==1) 15 ans=(ans*base)%mod; 16 17 base=(base*base)%mod; 18 p=p/2; 19 } 20 return ans; 21 }22 int main() 23 { 24 ll n; 25 cin>>n; 26 cout<<(fastpow(2,n-1)%mod); 27 return 0; 28 }
P3414 SAC#1 - 組合數