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。
1435 0
Kubernetes介绍篇:是什么?为什么要用?
|
SQL 缓存 分布式计算
每天一道大厂SQL题【Day11】微众银行真题实战(一)
每天一道大厂SQL题【Day11】微众银行真题实战(一)
288 0
|
Java
【Java系列】if-else代码优化的八种方案
目录 前言 优化方案一:提前return,去除不必要的else 优化方案二:使用条件三目运算符 优化方案三:使用枚举 优化方案四:合并条件表达式 优化方案五:使用 Optional 优化方案六:表驱动法 优化方案七:优化逻辑结构,让正常流程走主干 优化方案八:策略模式+工厂方法消除if else 前言 代码中如果if-else比较多,阅读起来比较困难,维护起来也比较困难,很容易出bug,接下来,本文将介绍优化if-else代码的八种方案。 优化方案一:
899 0
【Java系列】if-else代码优化的八种方案
您在阿里云网盘与相册服务支付后可以要求开具发票
您在阿里云网盘与相册服务支付后可以要求开具发票【1月更文挑战第13天】【1月更文挑战第62篇】
468 2
|
芯片 UED 内存技术
全球 25 大高科技城市排名出炉:北上深上榜,但国内最牛的却是它?
随着城市化进程的加快,根据相关机构的估算,未来大部分人都会居住在城市中。和乡村相比,城市的优势在于更为完善的基础设施、商业圈,当然也包括科技方面。 近日,美国媒体 Business Insider 根据一些研究数据,在网站上放出一个全球 25 大高科技城市排名。其中,上榜的美国城市有 6 个、中国有 5 个、日韩印度各有一个,其他上榜的城市基本为加拿大和欧洲地区。
1898 0
全球 25 大高科技城市排名出炉:北上深上榜,但国内最牛的却是它?
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
AI在医疗诊断中的应用与未来展望
随着人工智能技术的飞速发展,AI在医疗领域的应用日益广泛。本文探讨了AI在医疗诊断中的具体应用,包括医学影像分析、电子病历分析和辅助诊断等。同时,讨论了AI技术在未来医疗中的潜力和挑战,如数据隐私保护、算法的公平性和透明度等问题。通过分析具体案例和当前研究成果,本文揭示了AI在提高医疗诊断效率和准确性方面的显著优势,并对其未来发展进行了展望。
334 6
|
11月前
|
机器学习/深度学习 算法 数据可视化
机器学习的核心功能:分类、回归、聚类与降维
机器学习领域的基本功能类型通常按照学习模式、预测目标和算法适用性来分类。这些类型包括监督学习、无监督学习、半监督学习和强化学习。
496 0
|
文件存储
将阿里云盘挂载到本地
用CloudDrive将阿里云盘挂载到本地
15578 0
将阿里云盘挂载到本地
|
网络协议 网络虚拟化
MPLS VPN Hub&Spoke架构
MPLS VPN Hub&Spoke架构