C - Rikka with Badminton --- HDU 6425 快速幂加组合数学
---恢复内容开始---
题目链接:
https://vjudge.net/problem/1812693/origin
这题的mod运算很恶心,真的。。。
本题有正反两个思路,一个是正面求解其不能成立的情况,
一个是反面求解,用total减。
我用的是正面求解。
一共有种情况:
1. 全是球 :poww(2, a)*poww(2,c)-1
2. 全是拍 : poww(2, a)*poww(2, b)-1
3. 一拍多球(2种可能): 1 -- (poww(2, a)*poww(2, c)-1)*b(一个拍子!)
2 -- (poww(2, a)*poww(2,c)-1)*d
4. 啥也没 : poww(2, a)
加起来就好了, 由于数据很大,故而用到快速幂poww(我喜欢这样命名。。)
下面是AC代码:
#include <iostream>
#include <cstdio>
#define ll long long using namespace std; const int mod = ; ll poww(ll a, ll b)
{
ll ans = , base = a;
while(b)
{
if(b& != )
ans = (ans%mod)*(base%mod);
base = base%mod*base%mod;
b >>= ;
}
return ans%mod;
} int main()
{
int T;
scanf("%d", &T);
while(T--)
{
ll ans = ;
ll a, b, c, d;
scanf("%lld%lld%lld%lld", &a, &b, &c, &d); ans = (ans+(poww(, a)*(poww(, b)-)%mod))%mod; //只有拍子
ans = (ans+(poww(, a)*(poww(, c)-)%mod))%mod; //只有球
ans = (ans+(poww(, a)*(poww(, c)-)%mod*b%mod))%mod; //一拍N球
ans = (ans+(poww(, a)*(poww(, c))%mod*d%mod))%mod; // 一拍N球
ans = (ans+poww(, a)%mod)%mod; //啥也没 printf("%lld\n", ans%mod);
}
}
如有疑问,欢迎评论指出!
C - Rikka with Badminton --- HDU 6425 快速幂加组合数学的更多相关文章
- hdu 1061 快速幂
求n^n的个位 Sample Input 2 3 4 Sample Output 7 6 直接快速幂了,注意要用long long #include<cstdio> long long q ...
- hdu 5187 快速幂 + 快速乘 值得学习
就是以那个ai为分水岭,左边和右边都分别是单调增或单调减如图 就这四种情况,其中头两种总共就是两个序列,也就是从头到尾递增和从头到尾递减. 后两种方式就是把序列中德数分 ...
- hdu 1852(快速幂模+有除法的时候取模的公式)
Beijing 2008 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/65535 K (Java/Others)Tota ...
- 本原串(HDU 2197 快速幂)
本原串 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- hdu 4506 快速幂
小明自从告别了ACM/ICPC之后,就开始潜心研究数学问题了,一则可以为接下来的考研做准备,再者可以借此机会帮助一些同学,尤其是漂亮的师妹.这不,班里唯一的女生又拿一道数学题来请教小明,小明当然很高兴 ...
- HDU 1097 快速幂
#include<iostream> using namespace std; long long quick(long long a,long long b,int c) { ; a=a ...
- poj 3734 Blocks 快速幂+费马小定理+组合数学
题目链接 题意:有一排砖,可以染红蓝绿黄四种不同的颜色,要求红和绿两种颜色砖的个数都是偶数,问一共有多少种方案,结果对10007取余. 题解:刚看这道题第一感觉是组合数学,正向推了一会还没等推出来队友 ...
- Scout YYF I POJ - 3744(概率dp + 矩阵快速幂)
题意: 一条路上有n个地雷,你从1开始走,单位时间内有p的概率走一步,1-p的概率走两步,问安全通过这条路的概率 解析: 很容易想到 dp[i] = p * dp[i-1] + (1 - p) * d ...
- hdu5698瞬间移动(杨辉三角+快速幂+逆元)
瞬间移动 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submis ...
随机推荐
- win+python+selenium实现窗口和tab切换
这篇总结主要是关于两方面的需求:其一,在浏览器不同tab标签页之间按时间切换(同事用来不停刷新grid crontol 监控页面):其二,实现开启多个窗口,并将窗口缩放到一定范围,并齐占满整个桌面,按 ...
- C++ Primer 笔记——嵌套类 局部类
1.嵌套类是一个独立的类,与外层类基本没什么关系.特别的是,外层类的对象和嵌套类的对象是相互独立的.在嵌套类的对象中不包含任何外层类定义的成员,在外层类的对象中也不包含任何嵌套类定义的成员. 2.嵌套 ...
- Python内置模块之random
random的方法有 random.random # 返回一个随机的小数 ramdom.uniform # 按照一个区间返回一个小数 random.randint # 返回一个整数 random.ra ...
- fetch请求
get请求 return fetch('https://xxx.xxx.com/xxx.json') .then(response => response.json()) .then(respo ...
- Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
1.window操作系统的eclipse运行wordcount程序出现如下所示的错误: Exception in thread "main" java.lang.Unsatisfi ...
- mysql中cast() 和convert()的用法讲解
一.在mysql操作中我们经常需要对数据进行类型转换.此时我们应该使用的是cast()或convert(). 二.两者的对比 相同点:都是进行数据类型转换,实现的功能基本等同 不同点:两者的语法不同, ...
- python基础——循环(for,while,break,continue)
for while . break:退出循环 continue:退出本次循环 例子 for i range(0,101,2): print(i) --------------------------- ...
- python__int 部分内部功能介绍
查看创建的对象的类型: age=18 print(type(age)) 结果: <class 'int'> x.bit_length():返回二进制的位数 Python中进制的转换: Py ...
- JMeter实现登录初始化(类似LR的init函数功能实现)
1.项目背景 在做项目的性能测试过程中,发现系统的登录功能非常慢,所以,在涉及到登录才能操作的场景,尽量避开登录操作 解决方案: 首选设置“登录并生成签名值”线程组
- Docker技术底层架构剖析
[Docker 底层技术] docker底层的 2 个核心技术分别是 Namespaces 和 Control groups 在操作系统中,网络配置,进程,用户,IPC(进程之间的调用)等信息之间的 ...