hdu 4565 So Easy!

简介: 点击打开hdu 4565 思路: 递推+矩阵快速幂 分析: 1 这一题和hdu 2256    几乎就是一模一样的题目,只是这边要求的是向上取整    那么我们按照hdu2256的思路来做即可点击打开hdu 2256 代码: ...

点击打开hdu 4565

思路: 递推+矩阵快速幂

分析:

1 这一题和hdu 2256

   几乎就是一模一样的题目,只是这边要求的是向上取整

   那么我们按照hdu2256的思路来做即可点击打开hdu 2256


代码:

/************************************************
 * By: chenguolin                               * 
 * Date: 2013-08-28                             *
 * Address: http://blog.csdn.net/chenguolinblog *
 ************************************************/
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

typedef long long int64;
const int N = 2;
 
int a , b , n , MOD;
struct Matrix{
    int64 mat[N][N];
    Matrix operator*(const Matrix& m)const{
        Matrix tmp;
        for(int i = 0 ; i < N ; i++){
            for(int j = 0 ; j < N ; j++){
                tmp.mat[i][j] = 0;
                for(int k = 0 ; k < N ; k++)
                    tmp.mat[i][j] += mat[i][k]*m.mat[k][j]%MOD; 
                tmp.mat[i][j] %= MOD;
            }
        }
        return tmp;
    }
};

int Pow(Matrix &m){
    if(n == 1){
        int x = sqrt(b);
        int ans = a+x;
        if(x*x != b)
           ans++;
        return ans%MOD;
    }
    Matrix ans;
    memset(ans.mat , 0 , sizeof(ans.mat));
    for(int i = 0 ; i < N ; i++)
        ans.mat[i][i] = 1;
    n--;
    while(n){
        if(n&1)
            ans = ans*m;
        n >>= 1;
        m = m*m;
    }
    int64 sum = 0;
    sum += ans.mat[0][0]*a%MOD;
    sum += ans.mat[0][1]%MOD;
    return 2*sum%MOD;
}

int main(){
    Matrix m;
    while(scanf("%d" , &a) != EOF){
        scanf("%d%d%d" , &b , &n , &MOD);
        m.mat[0][0] = m.mat[1][1] = a;
        m.mat[0][1] = b ; m.mat[1][0] = 1;
        printf("%d\n" , Pow(m));
    } 
    return 0; 
}



 

目录
相关文章
|
运维 Kubernetes 负载均衡
Kubernetes介绍篇:是什么?为什么要用?
是时候该学习Kubernetes了,不然都不敢说自己了解容器、了解Docker。
1484 0
Kubernetes介绍篇:是什么?为什么要用?
|
Python
Python生成ArUco标签并保存在本地
写一个Python程序,能够生成指定字典的aruco标签图片,并保存在本地
612 0
|
关系型数据库 MySQL
Mysql连接无效(invalid connection)解决方案
Mysql连接无效(invalid connection)解决方案
1825 0
Mysql连接无效(invalid connection)解决方案
|
存储 缓存 编解码
KiCad 插件
AD 文档转 KiCad 文件。 InteractiveHtmlBom kicad_text_tool kicad_tools kicad-action-scripts
2256 0
KiCad 插件
|
Java
【Java系列】if-else代码优化的八种方案
目录 前言 优化方案一:提前return,去除不必要的else 优化方案二:使用条件三目运算符 优化方案三:使用枚举 优化方案四:合并条件表达式 优化方案五:使用 Optional 优化方案六:表驱动法 优化方案七:优化逻辑结构,让正常流程走主干 优化方案八:策略模式+工厂方法消除if else 前言 代码中如果if-else比较多,阅读起来比较困难,维护起来也比较困难,很容易出bug,接下来,本文将介绍优化if-else代码的八种方案。 优化方案一:
984 0
【Java系列】if-else代码优化的八种方案
|
10月前
|
存储 NoSQL Java
流计算需要框架吗?SPL 可能是更好的选择
流数据源的动态无界特性使得传统数据库技术难以直接处理,而Heron、Samza、Storm、Spark、Flink等计算框架在流计算领域取得了先发优势。然而,这些框架往往侧重于访问能力,计算能力不足,尤其在高级计算如流批混算、复杂计算和高性能计算方面表现欠佳。esProc SPL作为基于JVM的轻量级开源计算类库,专注于提升流计算的计算能力,支持丰富的流数据访问、灵活的集成接口和高效的内外存存储格式,具备强大的高级计算功能,能够简化业务逻辑开发并适应多样的应用场景。SPL通过专业的计算语言和结构化数据处理能力,为流计算提供了更优的解决方案。
|
芯片 UED 内存技术
全球 25 大高科技城市排名出炉:北上深上榜,但国内最牛的却是它?
随着城市化进程的加快,根据相关机构的估算,未来大部分人都会居住在城市中。和乡村相比,城市的优势在于更为完善的基础设施、商业圈,当然也包括科技方面。 近日,美国媒体 Business Insider 根据一些研究数据,在网站上放出一个全球 25 大高科技城市排名。其中,上榜的美国城市有 6 个、中国有 5 个、日韩印度各有一个,其他上榜的城市基本为加拿大和欧洲地区。
1966 0
全球 25 大高科技城市排名出炉:北上深上榜,但国内最牛的却是它?
您在阿里云网盘与相册服务支付后可以要求开具发票
您在阿里云网盘与相册服务支付后可以要求开具发票【1月更文挑战第13天】【1月更文挑战第62篇】
530 2
|
存储 NoSQL 搜索推荐
数据存储和检索
【10月更文挑战第10天】
207 3
|
移动开发 JavaScript 前端开发
HTML5 MathML好用的第三方库推荐
HTML5 的 MathML 对数学公式的展现至关重要,但因浏览器兼容性和复杂性问题,开发者常选用第三方库增强其功能。本文推荐了四个库:MathJax、KaTeX、MathML Cloud 和 jsMath。MathJax 兼容性好,支持多种格式;KaTeX 渲染速度快,适合现代浏览器;MathML Cloud 提供云端转换服务;jsMath 则适用于基本 MathML 支持。根据项目需求选择合适的库,能显著提升数学内容展示质量和用户体验。