SAC#1 - 组合数
题目描述
今天小明学习了组合数,现在他很想知道 ∑ C \sum \rm{C} ∑C n i _{n}^{i} ni 是多少。其中 C \rm{C} C 是组合数(即 C \rm{C} C n i _{n}^{i} ni 表示 n n n 个物品无顺序选取 i i i 个的方案数), i i i 取从 0 0 0 到 n n n 的所有偶数。
由于答案可能很大,请输出答案对 6662333 6662333 6662333 的余数。
输入格式
输入仅包含一个整数 n n n。
输出格式
输出一个整数,即为答案。
样例 #1
样例输入 #1
3
样例输出 #1
4
提示说明
对于 20 % 20\% 20% 的数据, n ≤ 20 n \le 20 n≤20;
对于 50 % 50\% 50% 的数据, n ≤ 1 0 3 n \le 10^{3} n≤103;
对于 100 % 100\% 100% 的数据, n ≤ 1 0 18 n \le 10^{18} n≤1018。
代码内容
// #include <iostream>
// #include <algorithm>
// #include <cstring>
// #include <stack>//栈
// #include <deque>//队列
// #include <queue>//堆/优先队列
// #include <map>//映射
// #include <unordered_map>//哈希表
// #include <vector>//容器,存数组的数,表数组的长度
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll p=6662333;
ll qmi(ll a,ll b,ll p)
{
//当b = 0,p = 1时
//①不 % p ,结果是 1
//② % p ,结果是 0(正确答案)
ll res=1%p;//注意:5 0 1
while(b)
{
if(b&1) res=res*a%p;
a=a*a%p;
b>>=1;//右移 1 位
}
return res;
}
int main()
{
ll n;
cin>>n;
ll res=qmi(2,n-1,p);
cout<<res<<endl;
return 0;
}