题目链接 

题解链接

版权属于以上链接

#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. 彻底弄懂jsonp原理及实现方法

    一. 同源策略 所有支持Javascript的浏览器都会使用同源策略这个安全策略.看看百度的解释: 同源策略,它是由Netscape提出的一个著名的安全策略. 现在所有支持JavaScript 的浏览 ...

  2. React child

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  3. hive存储、数据模型、内部表

    创建内部表 加一列元素 删除表

  4. scipy积分 integral

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/5/24 15:03 # @Author : zhang chao # @Fi ...

  5. Java微信二次开发(四)

    自定义文字菜单,暂时先实现一个根据用户输入城市名称来查询邮政编码和查询区号的功能 需要导入库:mysql-connector-java-5.0.8-bin.jar 第一步:利用Navicat新建一个用 ...

  6. XML的基礎結構

    1.xml是什麼? xml,Extensible Markup Language,扩展性标识语言,後綴名為.xml. 2.xml有什麼功能? xml功能是傳輸和儲存數據,用於不同的應用和平台數據共享和 ...

  7. 读取excel思路

    1.输入地址 2.输入指定的sheet  通过sheet()[]方式指定 3.输入执行的单元位置 通过 .cell_value(x,y)方式指定 示例 data = xlrd.open_workboo ...

  8. std::shared_ptr 和普通指针的转换

    相互转化见示例 struct test { int num; string name; }; test* pTest = new test(); std::shared_ptr<test> ...

  9. python+django+uwsgi 搭建环境

    第一步: 搭建python环境 最好使用  pyenv可以很好的管理多版本下的python环境 第二步:搭建django环境 使用    pip install django==1.12.1   来安 ...

  10. Codeforces925C Big Secret 【构造】【贪心】

    题目大意:给出异或差分序列,要你任意排列使得原序列递增. 题目分析: 我们在使得异或结果递增的过程中总能找到一个值使得它的最高位的1对应当前值的0.那么我们贪心的选择最高位最低的一个任意值使得它满足这 ...