HDU6442(二项式)
要点
- 懒得打公式了,题解
- 把题目要求的复杂公式化简成熟悉的东西,一是看穿前面加个\(n!\)化为\(C_n^i,i为奇数\);二是将奇数的条件去掉的数学技巧。
- 形为\({(a + b\sqrt{B})}^n\)的快速幂
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
int T;
ll A, B, n, p;
ll prime[1000005];
void Init() {
for (int i = 1; i <= 1000; i++)
for (int j = i * i; j <= (int)1e6; j += i * i)
prime[j] = i;
}
ll ksm(ll a, ll b, ll n, ll mod) {
ll res = 1, ret = 0;
for (; n; n >>= 1) {
if (n & 1) {
ll t = res, p = ret;
res = (t * a % mod + p * b % mod * B % mod) % mod;
ret = (t * b % mod + p * a % mod) % mod;
}
ll tmp = a;
a = (a * a % mod + b * b % mod * B % mod) % mod;
b = 2LL * tmp % mod * b % mod;
}
return ret;
}
int main() {
ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
Init();
for (cin >> T; T--;) {
cin >> A >> B >> n >> p;
ll u = prime[B];
B = B / (u * u);
cout << 1 << " " << ksm(A, u, n, p) << " " << B << '\n';
}
}
HDU6442(二项式)的更多相关文章
- PRML读书会第二章 Probability Distributions(贝塔-二项式、狄利克雷-多项式共轭、高斯分布、指数族等)
主讲人 网络上的尼采 (新浪微博: @Nietzsche_复杂网络机器学习) 网络上的尼采(813394698) 9:11:56 开始吧,先不要发言了,先讲PRML第二章Probability Dis ...
- cf111D Petya and Coloring 组合数学,二项式反演
http://codeforces.com/contest/111/problem/D Little Petya loves counting. He wants to count the numbe ...
- hdu3483之二项式展开+矩阵快速幂
A Very Simple Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Ot ...
- Codeforces 392C Yet Another Number Sequence (矩阵快速幂+二项式展开)
题意:已知斐波那契数列fib(i) , 给你n 和 k , 求∑fib(i)*ik (1<=i<=n) 思路:不得不说,这道题很有意思,首先我们根据以往得出的一个经验,当我们遇到 X^k ...
- [模板] 容斥原理: 二项式反演 / Stirling 反演 / min-max 容斥 / 子集反演 / 莫比乌斯反演
//待更qwq 反演原理 二项式反演 若 \[g_i=\sum_{j=1}^i {\binom ij} f_j\] , 则有 \[ f_i=\sum_{j=1}^i (-1)^{i-j} {i \ch ...
- 牛顿二项式与 e 级数
复习一下数学, 找一下回忆. 先是从二项式平方开始: 其实展开是这样的: 再看立方: 通过排列组合的方式标记, 于是: 通过数学归纳法可以拓展: 使用求和简写可得: e 级数 数学常数 e (The ...
- P4859 已经没有什么好害怕的了(dp+二项式反演)
P4859 已经没有什么好害怕的了 啥是二项式反演(转) 如果你看不太懂二项式反演(比如我) 那么只需要记住:对于某两个$g(i),f(i)$ ---------------------------- ...
- C++ 中递归实现 二项式展开式(a+b)^ n 的表达式
C++ 中递归实现 二项式展开式 的表达式 前几天,一个数学系读研的同学来问有什么软件可以来求 (a+b)^n 这种表达式类型的展开式,我随口一说了 Octave , 毕竟这个开源的还是可以的,后来他 ...
- GMA Round 1 二项式展开
传送门 二项式展开 求$(2x-y+\frac{3}{x}+4z)^{12}$展开式中不含x的任意非0次幂的项的系数和. 用排列组合的思想,相当于在12个括号里选项出来.先把$2x$和$\frac{3 ...
随机推荐
- JAVA- continue与break与return关键字
continue与break关键字 for(int i=0;i<10;i++){ if(i%2==0){ continue; //跳过当前循环执行下一次循环 } System.out.print ...
- CATTI二级口译训练
Vice chancellor, faculty members and dear students, It is my great pleasure and privilege to visit C ...
- JS工具函数汇总
备注:http://phpjs.org/ 这个站点把PHP常用的方法用js实现了,推荐一下 1.从数组中随机获取几个不重复项 //从一个给定的数组arr中,随机返回num个不重复项 function ...
- lxml解析html与元素定位
lxml.beautifulsoup和正则表达式都可以解析定位html元素.前两者中,lxml比beautifulsoup效率高,所以采用lxml解析html. 方法: from lxml impor ...
- VC++动态链接库(DLL)编程深入浅出:Q&A(原创)
Q1:extern “C” 是做什么用的? A1:一种情况是多个文件中,变量声明或者函数声明,需要extern “C”,这种情况在这里不做讨论. 在dll工程中,被extern "C&quo ...
- timing-function: steps()
animation语法 animation:name duration timing-function delay iteration-count direction timing-function取 ...
- bzoj 1049: 数字序列 dp
题目大意: 给定一个长度为n的整数序列.在改变的数最小的和改变的幅度最小的前提下把它变成一个单调严格上升的序列.求改变的最小的数和这个幅度. 题解: (貌似以前考试考过这道题) 其实这道题就是两道题拼 ...
- 【Lintcode】028.Search a 2D Matrix
题目: Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the f ...
- Floyd(稠密图,记录路径)
#include<iostream> #include<algorithm> #include<cstdio> #include<cstdlib> #i ...
- 有关mapminmax的用法详解
几个要说明的函数接口: [Y,PS] = mapminmax(X) [Y,PS] = mapminmax(X,FP) Y = mapminmax('apply',X,PS) X = mapminmax ...