c_cpp ACM-ICPC 2018焦作赛区网络预赛
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp ACM-ICPC 2018焦作赛区网络预赛相关的知识,希望对你有一定的参考价值。
/**
* 题目: T个样例,N个孩子N个糖果,孩子按1~N排队,每次按顺序选一个孩子给他至少1个糖果,
* 直至糖果用完,问有多少种分配方案。
* 这题直接用插板法就可以了,从后往前推,所有孩子都有1个糖果,相当于N个糖果中
* 插N-1块板,倒数第一个孩子没糖果,则相当于在N个糖果中插N-2块板,这样递推回来
* 最后发现所有方案数加起来就是C(n-1,0)+...+C(n-1,n-1) = 2^(n-1)
* 另外这题N有10^1e5次方大,所以得用大整数取模+欧拉降幂+快速幂
*
* input:
* 1
* 4
*
* output:
* 8
* /
#include <iostream>
#include <string.h>
#include <cstdio>
#include <queue>
#include <stack>
#include <math.h>
#include <string>
#include <algorithm>
#define SIGMA_SIZE 26
#define lson rt<<1
#define rson rt<<1|1
#define lowbit(x) (x&-x)
#define fode(i, a, b) for(int i=a; i>=b; i--)
#define foe(i, a, b) for(int i=a; i<=b; i++)
#define fod(i, a, b) for(int i=a; i>b; i--)
#define fo(i, a, b) for(int i=a; i<b; i++)
//#pragma warning ( disable : 4996 )
using namespace std;
typedef long long LL;
inline LL LMax(LL a, LL b) { return a>b ? a : b; }
inline LL LMin(LL a, LL b) { return a>b ? b : a; }
inline LL lgcd(LL a, LL b) { return b == 0 ? a : lgcd(b, a%b); }
inline LL llcm(LL a, LL b) { return a / lgcd(a, b)*b; } //a*b = gcd*lcm
inline int Max(int a, int b) { return a>b ? a : b; }
inline int Min(int a, int b) { return a>b ? b : a; }
inline int gcd(int a, int b) { return b == 0 ? a : gcd(b, a%b); }
inline int lcm(int a, int b) { return a / gcd(a, b)*b; } //a*b = gcd*lcm
const LL INF = 0x3f3f3f3f3f3f3f3f;
const LL mod = 1e9+7;
const double eps = 1e-8;
const int inf = 0x3f3f3f3f;
const int maxk = 1e6+5;
const int maxn = 1e6+10;
int n;
char str[maxn];
LL getM(LL a, LL b, LL m)
{
LL _sum = 1, base = a;
while (b)
{
if (b&1)
_sum = (_sum*base)%m;
base = (base*base)%mod;
b >>= 1;
}
return _sum;
}
int divMod(LL m)
{
LL s = 0;
for(int i = 0; str[i]!='\0'; i++)
s = (s * 10 + str[i]-'0') % m;
return s;
}
LL getAns(int x)
{
LL up = divMod(mod-1) + mod-2;
return getM(2LL, up, mod);
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
#endif
int T; cin >> T;
while(T--)
{
memset(str, 0, sizeof(str));
scanf("%s", str);
cout << getAns(n) << endl;
}
return 0;
}
以上是关于c_cpp ACM-ICPC 2018焦作赛区网络预赛的主要内容,如果未能解决你的问题,请参考以下文章
ACM-ICPC 2018 焦作赛区网络预赛 B题 Mathematical Curse
ACM-ICPC 2018 焦作赛区网络预赛 Solution
ACM-ICPC 2018 焦作赛区网络预赛 HL
ACM-ICPC 2018 焦作赛区网络预赛 G题 Give Candies
ACM-ICPC 2018 焦作赛区网络预赛 L 题 Poor God Water
Poor God Water(ACM-ICPC 2018 焦作赛区网络预赛 矩阵快速幂)