题意:

给出a,b,n,m;

0< a, m < 2 15, (a-1) 2< b < a 2, 0 < b, n < 2 31

思路:

不会写,看来别人的博客补的。。。。。。

题目重点在于

(a-1) 2< b < a 2

即 a-1<sqrt(b)<a

(a−√b)    <  1

(a−√b)^n  <1

令 cn= (a+√b)^n +  (a−√b)^n

这里提到   (a+√b)^n 与  (a−√b)^n  共轭,所以二者相加的cn为整数

又因为 (a-sqrt(b))^n <1

所以  Cn=⌈An⌉

得到这个还不够我们得求出Cn

Cn*((a+√b) +  (a−√b))

=((a+√b)^n +  (a−√b)^n)*((a+√b) +  (a−√b))

=((a+√b)^(n+1) +  (a−√b)^(n+1)  + (a+√b)^n  *  (a-√b) + (a-√b)^n  *  (a+√b)

=  Cn+1 +(a+√b)^n-1  * (a+√b)* (a-√b) + (a-√b)^n-1  *  (a+√b)* (a-√b)

=  Cn+1 + Cn-1*(a^2-b)

Cn+1 = Cn*(2a) - Cn-1*(a^2-b)

| C1    C0    |    | 2a        1| ^ n

|  0        0    |    |  b-a*a   0|

#include<bits/stdc++.h>
using namespace std;
long long N;
struct node
{long long a[2][2];
};
node cheng(node a,node b)
{node c;memset(c.a,0,sizeof(c.a));for(int i=0;i<2;i++){for(int j=0;j<2;j++)for(int k=0;k<2;k++)c.a[i][j]=(c.a[i][j]+(a.a[i][k]*b.a[k][j])%N)%N;}return c;
}
int main()
{long long a,b,n,m;node x,y;while(~scanf("%lld%lld%lld%lld",&a,&b,&n,&m)){x.a[0][0]=2*a;x.a[0][1]=2;x.a[1][0]=0;x.a[1][1]=0;y.a[0][0]=2*a;y.a[0][1]=1;y.a[1][0]=b-a*a;y.a[1][1]=0;N=m;n--;while(n){if(n&1) x=cheng(x,y);n>>=1;y=cheng(y,y);}printf("%lld\n",(x.a[0][0]%N+N)%N);} return 0;
}

HDU - 4565 So Easy!相关推荐

  1. HDU - 4565 So Easy!(共轭构造+推公式+矩阵快速幂)

    题目链接:点击查看 题意:给出a,b,m,n,求 解析:题意一目了然,此题的关键是推出解决问题的公式. 首先,题目要求括号内n次方后向上取整再模m,而这里给到的a与b的关系接下来也会用到:<b& ...

  2. So Easy!(HDU - 4565)

    Problem Description A sequence S n is defined as: Where a, b, n, m are positive integers.┌x┐is the c ...

  3. HDU 2055 An easy problem

    继续水水 #include <stdio.h> int main ( ) {int n;scanf ( "%d" , &n );while ( n-- ){in ...

  4. HDU - 5572 An Easy Physics Problem(几何-碰撞问题)

    题目链接:点击查看 题目大意:在一个二维平面上,给出一个实心圆柱体,再给出一个可以视为质点的小球,小球初始时位于点 A ,会给出一个速度向量 VA,当小球碰到圆柱体时,会因碰撞弹开,规定碰撞不会丢失动 ...

  5. HDU - 5475 An easy problem(线段树)

    题目链接:点击查看 题目大意:给定n次操作和一个m,每次操作后对m取模,每次操作分为两种,初始化当前的数为1: 1 x:当前的数乘上x后输出结果 2 x:当前的数除以第x个操作的数后输出结果 题目分析 ...

  6. 数学--数论-- HDU 2601 An easy problem(约束和)

    Problem Description When Teddy was a child , he was always thinking about some simple math problems ...

  7. HDOJ(HDU) 2123 An easy problem(简单题...)

    Problem Description In this problem you need to make a multiply table of N * N ,just like the sample ...

  8. kuangbin带你飞专题合集

    题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...

  9. 算法学习经典例题整理

    陆续会对本篇博客进行更新! 搜索:https://vjudge.net/contest/292597 区间DP:https://vjudge.net/contest/293892 树状背包:https ...

  10. linux下eclipse开发storm,eclipse 通过maven 开发storm项目

    window系统安装java 这里下载jdk8....... 配置环境变量 1.安装完成后,右击"我的电脑",点击"属性",选择"高级系统设置&quo ...

最新文章

  1. 常用jar包之commons-beanutils使用
  2. silverlight实现2D人物动画
  3. 全球及中国公路行业运营模式与十四五价值前景分析报告2022版
  4. MySQL超简单安装方法,一条命令就搞定
  5. 『并发包入坑指北』之向大佬汇报任务
  6. 机器学习基础(二十)—— 数学语言与 Python 代码
  7. java中字符串逆序_[Java教程]一行代码实现字符串逆序输出
  8. 基于C#制作的简易代码生成器
  9. 物理内存占用多少正常
  10. 课程笔记-三维点云处理01 ——Introduction and Basic Algorithms
  11. Flutter 无法热重载
  12. python strip( )函数
  13. Codeforces 940E - Cashback
  14. Linux 修改用户名(同时修改用户组名和家目录)
  15. java中事务一致性学习及其解决方案
  16. java计算机毕业设计门诊药品管理系统源码+数据库+系统+lw文档+mybatis+运行部署
  17. 离线强化学习论文学习 Critic Regularized Regression
  18. 中国光伏逆变器市场现状调研及前景预测分析报告2022-2028年
  19. IC设计高级012:afifo读数据用什么信号采样
  20. centOS安装成功后如何进入图形界面以及如何打开终端命令?

热门文章

  1. windows Servers服务器系统时间总是自动更新为错误时间,修改了还是不对解决办法
  2. sl4a最新版下载_SL4A Script Launcher
  3. 2T硬盘安装WIN7分区格式
  4. 微软Kinect for windows SDK 使用教程 (NUI部分)
  5. 职称计算机辅导软件,职称计算机辅导:WindowsXP辅助工具
  6. win7系统音响没有声音的解决设置方法
  7. 收集利用 Kotlin 进行 Android 开发的开源库,扩展,工具,开源项目,资料等高质量资源
  8. 海思(六)如何在ubuntu20.04上搭建caffe环境
  9. 在matlab下使用预训练模型Alex Net进行迁移学习的实验与分析
  10. centos离线安装docker-ce 18.03.0-ce