HDU - 4565 So Easy!
题意:
给出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!相关推荐
- HDU - 4565 So Easy!(共轭构造+推公式+矩阵快速幂)
题目链接:点击查看 题意:给出a,b,m,n,求 解析:题意一目了然,此题的关键是推出解决问题的公式. 首先,题目要求括号内n次方后向上取整再模m,而这里给到的a与b的关系接下来也会用到:<b& ...
- 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 ...
- HDU 2055 An easy problem
继续水水 #include <stdio.h> int main ( ) {int n;scanf ( "%d" , &n );while ( n-- ){in ...
- HDU - 5572 An Easy Physics Problem(几何-碰撞问题)
题目链接:点击查看 题目大意:在一个二维平面上,给出一个实心圆柱体,再给出一个可以视为质点的小球,小球初始时位于点 A ,会给出一个速度向量 VA,当小球碰到圆柱体时,会因碰撞弹开,规定碰撞不会丢失动 ...
- HDU - 5475 An easy problem(线段树)
题目链接:点击查看 题目大意:给定n次操作和一个m,每次操作后对m取模,每次操作分为两种,初始化当前的数为1: 1 x:当前的数乘上x后输出结果 2 x:当前的数除以第x个操作的数后输出结果 题目分析 ...
- 数学--数论-- HDU 2601 An easy problem(约束和)
Problem Description When Teddy was a child , he was always thinking about some simple math problems ...
- 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 ...
- kuangbin带你飞专题合集
题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...
- 算法学习经典例题整理
陆续会对本篇博客进行更新! 搜索:https://vjudge.net/contest/292597 区间DP:https://vjudge.net/contest/293892 树状背包:https ...
- linux下eclipse开发storm,eclipse 通过maven 开发storm项目
window系统安装java 这里下载jdk8....... 配置环境变量 1.安装完成后,右击"我的电脑",点击"属性",选择"高级系统设置&quo ...
最新文章
- 常用jar包之commons-beanutils使用
- silverlight实现2D人物动画
- 全球及中国公路行业运营模式与十四五价值前景分析报告2022版
- MySQL超简单安装方法,一条命令就搞定
- 『并发包入坑指北』之向大佬汇报任务
- 机器学习基础(二十)—— 数学语言与 Python 代码
- java中字符串逆序_[Java教程]一行代码实现字符串逆序输出
- 基于C#制作的简易代码生成器
- 物理内存占用多少正常
- 课程笔记-三维点云处理01 ——Introduction and Basic Algorithms
- Flutter 无法热重载
- python strip( )函数
- Codeforces 940E - Cashback
- Linux 修改用户名(同时修改用户组名和家目录)
- java中事务一致性学习及其解决方案
- java计算机毕业设计门诊药品管理系统源码+数据库+系统+lw文档+mybatis+运行部署
- 离线强化学习论文学习 Critic Regularized Regression
- 中国光伏逆变器市场现状调研及前景预测分析报告2022-2028年
- IC设计高级012:afifo读数据用什么信号采样
- centOS安装成功后如何进入图形界面以及如何打开终端命令?
热门文章
- windows Servers服务器系统时间总是自动更新为错误时间,修改了还是不对解决办法
- sl4a最新版下载_SL4A Script Launcher
- 2T硬盘安装WIN7分区格式
- 微软Kinect for windows SDK 使用教程 (NUI部分)
- 职称计算机辅导软件,职称计算机辅导:WindowsXP辅助工具
- win7系统音响没有声音的解决设置方法
- 收集利用 Kotlin 进行 Android 开发的开源库,扩展,工具,开源项目,资料等高质量资源
- 海思(六)如何在ubuntu20.04上搭建caffe环境
- 在matlab下使用预训练模型Alex Net进行迁移学习的实验与分析
- centos离线安装docker-ce 18.03.0-ce