51Nod-1436 方程的解数
版权属于以上链接
#include <iostream> #define mod(a, m) ((a) % (m) + (m)) % (m) using namespace std; typedef long long ll; const int MAGIC = ; ll n, k, l, m; struct matrix
{
ll c[][];
} a; ll f[]; void ans_cf(matrix a)
{
f[] = mod(a.c[][] + a.c[][], m);
f[] = mod(a.c[][] + a.c[][], m);
} matrix matrix_cf(matrix a, matrix b)
{
matrix ans;
for (int i = ; i < ; i++)
{
for (int j = ; j < ; j++)
{
ans.c[i][j] = ;
for (int k = ; k < ; k++)
{
ans.c[i][j] += a.c[k][i] * b.c[j][k];
ans.c[i][j] = mod(ans.c[i][j], m);
}
}
} return ans;
} matrix matrix_pow(matrix a, ll n)
{
matrix ans;
ans.c[][] = ans.c[][] = ;
ans.c[][] = ans.c[][] = ;
while (n)
{
if (n & )
{
ans = matrix_cf(ans, a);
}
n = n >> ;
a = matrix_cf(a, a);
} return ans;
} ll qpow(ll a, ll b)
{
ll ans = ;
while (b)
{
if (b & )
{
ans = mod(ans * a, m);
}
b = b >> ;
a = mod(a * a, m);
} return ans;
} void init()
{
a.c[][] = a.c[][] = a.c[][] = ;
a.c[][] = ;
} int main(int argc, const char * argv[])
{
cin >> n >> k >> l >> m; unsigned long long t = 1ULL << l;
if (m == || (k >= t && l != MAGIC))
{
cout << << '\n';
return ;
} init();
a = matrix_pow(a, n);
ans_cf(a);
ll x = f[], y = mod(qpow(, n) - x, m); int cnt_0 = , cnt_1 = ;
while (k)
{
if (k % )
{
cnt_1++;
}
else
{
cnt_0++;
}
k >>= ;
}
cnt_0 += l - cnt_0 - cnt_1; ll ans = mod(mod(qpow(x, cnt_0), m) * mod(qpow(y, cnt_1), m), m);
cout << ans << '\n'; return ;
}
51Nod-1436 方程的解数的更多相关文章
- POJ 1186 方程的解数
方程的解数 Time Limit: 15000MS Memory Limit: 128000K Total Submissions: 6188 Accepted: 2127 Case Time ...
- 计蒜客 方程的解数 dfs
题目: https://www.jisuanke.com/course/2291/182237 思路: 来自:https://blog.csdn.net/qq_29980371/article/det ...
- NOI2001 方程的解数
1735 方程的解数 http://codevs.cn/problem/1735/ 2001年NOI全国竞赛 时间限制: 5 s 空间限制: 64000 KB 题目描述 Descripti ...
- [ NOI 2001 ] 方程的解数
\(\\\) \(Description\) 已知一个 \(N\) 元高次方程: \[ k_1x_1^{p_1}+k_2x_2^{p_2}+...+k_nx_n^{p_n}=0 \] 要求所有的 \( ...
- cogs 304. [NOI2001] 方程的解数(meet in the middle)
304. [NOI2001] 方程的解数 ★★☆ 输入文件:equation1.in 输出文件:equation1.out 简单对比时间限制:3 s 内存限制:64 MB 问题描述 已 ...
- P5691 [NOI2001]方程的解数
题意描述 方程的解数 求方程 \(\sum_{i=1}^{n}k_ix_i^{p_i}=0(x_i\in [1,m])\) 的解的个数. 算法分析 远古 NOI 的题目就是水 类似于这道题. 做过这道 ...
- [Swust OJ 166]--方程的解数(hash法)
题目链接:http://acm.swust.edu.cn/problem/0166/ Time limit(ms): 5000 Memory limit(kb): 65535 有如下方程组: A1 ...
- 【poj1186】 方程的解数
http://poj.org/problem?id=1186 (题目链接) 题意 已知一个n元高次方程: 其中:x1, x2,…,xn是未知数,k1,k2,…,kn是系数,p1,p2,…pn是指数 ...
- NOI2001 方程的解数(双向搜索)
solution 一道非常经典的双向搜索题目,先将前3个未知数枚举一遍得到方程的前半部分所有可能的值,取负存入第一个队列中再将后3个未知数枚举一遍,存入第二个队列中.这样我们只要匹配两个队列中相同的元 ...
- 计蒜客 方程的解数(DFS)
问题描述 输出格式 输出一行,输出一个整数,表示方程的整数解的个数. 样例输入 - 样例输出 #include <stdio.h> #include <string.h> #i ...
随机推荐
- Jenkins and Python
https://jenkins.io/solutions/python/ In the Python ecosystem there are tools which can be integrated ...
- Windows 下面 winrar 压缩简单记录
1. 最高压缩比率 原始文件大小: 2.06g(3000余个文件) 压缩后文件大小:475m 压缩耗时: 210s 压缩率:22% 2. 较高压缩比率 压缩后文件大小:700 m 压缩率:32% 3 ...
- BZOJ4864[BeiJing 2017 Wc]神秘物质——非旋转treap
题目描述 21ZZ 年,冬. 小诚退休以后, 不知为何重新燃起了对物理学的兴趣. 他从研究所借了些实验仪器,整天研究各种微观粒子.这 一天, 小诚刚从研究所得到了一块奇异的陨石样本, 便迫不及待地开始 ...
- BZOJ2325[ZJOI2011]道馆之战——树链剖分+线段树
题目描述 口袋妖怪(又名神奇宝贝或宠物小精灵)红/蓝/绿宝石中的水系道馆需要经过三个冰地才能到达馆主的面前,冰地中 的每一个冰块都只能经过一次.当一个冰地上的所有冰块都被经过之后,到下一个冰地的楼梯才 ...
- LAMP和LNMP去除index.php访问
使用TP或者Laravel开发的时候,后时候会遇到需要加index.php才能正常访问 LAMP解决方法 1.修改配置 打开配置文件(如:httpd.conf),找到你网站根目录的配置,将AllowO ...
- OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用
解决方案:oracle 版本太低,请装11G或以上版本..
- 任意目录下启动tomcat
DOS中启动tomcat 1.将tomcat的bin目录添加到Path变量中 2.添加catalina_home变量 3.命令行输入catalina run ojbk
- MT【54】一道二次函数问题的几何意义
[Rather less, but better.]----卡尔·弗里德里希·高斯(1777-1855) (2016诸暨质检18)已知$f(x)=x^2-a|x-1|+b(a>0,b>-1 ...
- cf1000C Covered Points Count (差分+map)
考虑如果数字范围没有这么大的话,直接做一个差分数组就可以了 但现在变大了 所以要用一个map来维护 #include<bits/stdc++.h> #define pa pair<i ...
- 【uoj291】 ZJOI2017—树状数组
http://uoj.ac/problem/291 (题目链接) 题意 一个写错的树状数组有多大的概率与正常树状数组得出的答案一样. Solution 可以发现这个树状数组维护的是后缀和. 所以二维线 ...