题目链接 

题解链接

版权属于以上链接

#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 方程的解数的更多相关文章

  1. POJ 1186 方程的解数

    方程的解数 Time Limit: 15000MS   Memory Limit: 128000K Total Submissions: 6188   Accepted: 2127 Case Time ...

  2. 计蒜客 方程的解数 dfs

    题目: https://www.jisuanke.com/course/2291/182237 思路: 来自:https://blog.csdn.net/qq_29980371/article/det ...

  3. NOI2001 方程的解数

    1735 方程的解数 http://codevs.cn/problem/1735/ 2001年NOI全国竞赛  时间限制: 5 s  空间限制: 64000 KB     题目描述 Descripti ...

  4. [ NOI 2001 ] 方程的解数

    \(\\\) \(Description\) 已知一个 \(N\) 元高次方程: \[ k_1x_1^{p_1}+k_2x_2^{p_2}+...+k_nx_n^{p_n}=0 \] 要求所有的 \( ...

  5. cogs 304. [NOI2001] 方程的解数(meet in the middle)

    304. [NOI2001] 方程的解数 ★★☆   输入文件:equation1.in   输出文件:equation1.out   简单对比时间限制:3 s   内存限制:64 MB 问题描述 已 ...

  6. P5691 [NOI2001]方程的解数

    题意描述 方程的解数 求方程 \(\sum_{i=1}^{n}k_ix_i^{p_i}=0(x_i\in [1,m])\) 的解的个数. 算法分析 远古 NOI 的题目就是水 类似于这道题. 做过这道 ...

  7. [Swust OJ 166]--方程的解数(hash法)

    题目链接:http://acm.swust.edu.cn/problem/0166/ Time limit(ms): 5000 Memory limit(kb): 65535   有如下方程组: A1 ...

  8. 【poj1186】 方程的解数

    http://poj.org/problem?id=1186 (题目链接) 题意 已知一个n元高次方程:   其中:x1, x2,…,xn是未知数,k1,k2,…,kn是系数,p1,p2,…pn是指数 ...

  9. NOI2001 方程的解数(双向搜索)

    solution 一道非常经典的双向搜索题目,先将前3个未知数枚举一遍得到方程的前半部分所有可能的值,取负存入第一个队列中再将后3个未知数枚举一遍,存入第二个队列中.这样我们只要匹配两个队列中相同的元 ...

  10. 计蒜客 方程的解数(DFS)

    问题描述 输出格式 输出一行,输出一个整数,表示方程的整数解的个数. 样例输入 - 样例输出 #include <stdio.h> #include <string.h> #i ...

随机推荐

  1. Gradle下载类库源码

    https://blog.csdn.net/xiaoxing598/article/details/68958383 备选:https://www.cnblogs.com/yoyotl/p/62917 ...

  2. Java 编码规范 StandardCharsets.UTF_8 三个方法 toString() name() displayName(),到底用哪个方法更合适?

    想用StandardCharsets.UTF_8 返回"UTF-8"这个字符,测试一下,三个方法toString() name() displayName(),均能返回" ...

  3. PHP微信支付案例收录

    微信支付API 文档:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1&index=1# TP 微信 + 支 ...

  4. Sqlserver 系统视图简单说明

    1. 查看系统视图的sql语句 select * from sys.system_views 2. 查看所有的 dynamic management 视图的sql select * from sys. ...

  5. Wordpress 更新时 不输入ftp相关信息的方法

    From 百度知道 我自己机器上面的处理过程为: cd /usr/share/nginx/html vim wp-config.php 在配置文件里面插入这三行 define("FS_MET ...

  6. 转载 linux常用的监控命令工具

    工具 简单介绍top 查看进程活动状态以及一些系统状况vmstat 查看系统状态.硬件和系统信息等iostat 查看CPU 负载,硬盘状况sar 综合工具,查看系统状况mpstat 查看多处理器状况n ...

  7. Laravel Eloquent ORM 时如何查询表中指定的字段

    导读:在使用Laravel ORM的Model方法find, get, first方法获取数据对象时返回的数据对象的attributes属性数组里会包含数据表中所有的字段对应...原文地址:http: ...

  8. ES6定型数组

    前面的话 定型数组是一种用于处理数值类型(正如其名,不是所有类型)数据的专用数组,最早是在WebGL中使用的,WebGL是OpenGL ES 2.0的移植版,在Web 页面中通过 <canvas ...

  9. mybatis的缓存机制(一级缓存二级缓存和刷新缓存)和mybatis整合ehcache

    1.1  什么是查询缓存 mybatis提供查询缓存,用于减轻数据压力,提高数据库性能. mybaits提供一级缓存,和二级缓存. 一级缓存是SqlSession级别的缓存.在操作数据库时需要构造 s ...

  10. 第八届蓝桥杯国赛java B组第三题

    标题:树形显示 对于分类结构可以用树形来形象地表示.比如:文件系统就是典型的例子. 树中的结点具有父子关系.我们在显示的时候,把子项向右缩进(用空格,不是tab),并添加必要的连接线,以使其层次关系更 ...