hdu 5667 BestCoder Round #80 矩阵快速幂

一文搞定离线环境下的RAG引擎部署 在人工智能浪潮下,技术已成为构建智能问答、文档分析和代码助手等应用的核心。然而,在许多企业场景中,出于数据安全和性能的考虑,服务器往往部署在中,并要求极致的推理效率。这给依赖外部资源的应用部署带来了巨大挑战。如何在这种严苛的环境下,完整、可靠地部署一套包含向量数据库、**高性能推理服务(vLLM)**和Python后台的复杂RAG系统呢?本文将为你提供一个,手把手教你如何使用 Docker 技术,将一套基于 Weaviate 和的 Python RAG 应用完整打包,并在离线环境中一键部署。 阅读详情

Sequence

 
 Accepts: 59
 
 Submissions: 650
 Time Limit: 2000/1000 MS (Java/Others)
 
 Memory Limit: 65536/65536 K (Java/Others)
Problem Description

\ \ \ \    Holion August will eat every thing he has found.

\ \ \ \    Now there are many foods,but he does not want to eat all of them at once,so he find a sequence.

f_n=\left{\begin{matrix} 1 ,&n=1 \ a^b,&n=2 \ a^bf_{n-1}^cf_{n-2},&otherwise \end{matrix}\right.f​n​​=​⎩​⎨​⎧​​​1,​a​b​​,​a​b​​f​n−1​c​​f​n−2​​,​​​n=1​n=2​otherwise​​

\ \ \ \    He gives you 5 numbers n,a,b,c,p,and he will eat f_nf​n​​ foods.But there are only p foods,so you should tell him f_nf​n​​ mod p.

Input

\ \ \ \    The first line has a number,T,means testcase.

\ \ \ \    Each testcase has 5 numbers,including n,a,b,c,p in a line.

\ \ \ \ 1\le T \le 10,1\le n\le 10^{18},1\le a,b,c\le 10^9    1≤T≤10,1≤n≤10​18​​,1≤a,b,c≤10​9​​,pp is a prime number,and p\le 10^9+7p≤10​9​​+7.

Output

\ \ \ \    Output one number for each case,which is f_nf​n​​ mod p.

Sample Input
1
5 3 3 3 233
Sample Output
190


/*
hdu 5667 BestCoder Round #80 矩阵快速幂

F[n] = 1 (n == 1)
F[n] = a^b (n == 2)
F[n] = a^b * F[n-1]^c *F [n-2]

最开始试了下化简公式,但是无果. 也从矩阵快速幂上面考虑过(毕竟 F[n]与 F[n-1],F[n-2]有关)
但是发现是 乘法运算不知道怎么弄了(2b了)

能够发现运算时基于a的次方的,当a的次方相乘时就变成了他们的次方相加 (好气 TAT)
于是乎 a^g[n] = a^(b + c*g[n-1] * g[n-2])
然后用类似快速幂求斐波那契数的方法即可

F[n]    F[n-1] 1         C  1  0
F[n-1]  F[n-2] 1    *    1  0  0
                         b  0  1
hhh-2016-04-18 20:36:40
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <map>
#include <algorithm>
#include <functional>
#include <math.h>
using namespace std;
#define lson  (i<<1)
#define rson  ((i<<1)|1)
typedef long long ll;
const int maxn = 100040;

struct Matrix
{
    ll ma[3][3];
    Matrix()
    {
        memset(ma,0,sizeof(ma));
    }
};

Matrix mult(Matrix ta,Matrix tb, ll mod)
{
    Matrix tc;
    for(int i = 0; i < 3; i++)
    {
        for(int j = 0; j < 3; j++)
        {
            tc.ma[i][j] = 0;
            for(int k = 0; k < 3; k++){
                tc.ma[i][j] += (ta.ma[i][k] * tb.ma[k][j])%mod;
                tc.ma[i][j] %= mod;
            }
        }
    }
    return tc;
}

Matrix Mat_pow(Matrix ta,ll n,ll mod)
{
    Matrix t;
    for(int i = 0; i < 3; i++)
        t.ma[i][i] = 1;
    while(n)
    {
        if(n & 1) t = mult(t,ta,mod);
        ta = mult(ta,ta,mod);
        n >>= 1;
    }
    return t;
}

ll pow_mod(ll a,ll n,ll mod)
{
    ll t = 1;
    a %= mod ;
    while(n)
    {
        if(n & 1) t = t*a%mod;
        a = a*a%mod;
        n >>= 1;
    }
    return t;
}

Matrix mat;
Matrix an;
ll a,b,c;
void ini(ll mod)
{
    mat.ma[0][0] = c,mat.ma[0][1] = 1,mat.ma[0][2] = 0;
    mat.ma[1][0] = 1,mat.ma[1][1] = 0,mat.ma[1][2] = 0;
    mat.ma[2][0] = b,mat.ma[2][1] = 0,mat.ma[2][2] = 1;


    an.ma[0][0] = (b+b*c%mod)%mod,an.ma[0][1] = b,an.ma[0][2] = 1;
    an.ma[1][0] = b,an.ma[1][1] = 0,an.ma[2][1] = 1;
}
ll mod,n;

int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%I64d%I64d%I64d%I64d%I64d",&n,&a,&b,&c,&mod);
        a%=mod,b%=mod,c%=mod;
        ini(mod-1);
        if(n == 1)
        {
            printf("1\n");
        }
        else if(n == 2)
            printf("%I64d\n",pow_mod(a,b,mod));
        else
        {
            mat = Mat_pow(mat,n-3,mod-1);
            mat = mult(an,mat,mod-1);
            ll ci = mat.ma[0][0];
            //cout << ci <<endl;
            printf("%I64d\n",pow_mod(a,ci,mod));
        }
    }
    return 0;
}


泛微表单添加自定义按钮 阅读详情

相关推荐

MATLAB实战:手把手教你用三频四步相移法搞定结构光三维重建(附完整代码)

本文详细介绍了如何使用MATLAB实现三频四步相移法进行高精度结构光三维重建。通过光栅图像预处理、相位计算、多频外差与相位解包裹等步骤,结合完整代码示例,帮助读者掌握从二维图像到三维点云的关键技术。该方法在工业检测和逆向工程中具有抗干扰能力强、高分辨率和鲁棒性等优势。

weixin_29201933的博客 338

BestCoder Round #80 C (hdu5667) 【矩阵快速幂】

链接:http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=688&pid=1003 题意:中文题,给你f1,f2,fn=a^b+fn-1^c+fn-2,让你求fn 分析:看公式一眼矩阵快速幂,但是式子里面有fn-1^c,直接上矩阵是求不出的,我们可以观察到式子的每项都是以a为底的数,f1=a^0,f2=a^b,

Fb_by 391

MR2数据集实战:5步搞定多模态谣言检测模型训练(附完整代码)

本文详细介绍了如何使用MR2多模态数据集构建高精度谣言检测系统,涵盖环境配置、数据准备、多模态特征工程、模型架构设计、训练调优及部署优化等5个关键步骤。通过双线性融合技术处理文本、图像和网页三模态数据,解决特征对齐和模态冲突等工程难题,并提供完整代码实现和性能优化方案。

weixin_42657024的博客 238

Mee Manga Translator:AI漫画翻译如何保留原画细节

漫画本地化是一项复杂的图像工程,远不止把文字翻成另一种语言。传统流程中,大量时间花在擦除原文、修复背景和重排译文上。随着OCR文本检测、机器翻译与图像修复(inpainting)等AI技术走向成熟,自动化漫画翻译成为可能。这类方案先定位气泡中的文字,再通过图像修复模型重建被文字遮挡的线条和网点,最后将译文渲染回原位置,从而在批量场景下大幅缩短单页处理时间。对于汉化组、多语言漫画发布工具或条漫/日漫/韩漫译者,理解文本检测、修复参数与批量处理链路,比一味追求模型能力更重要。本文以Mee Manga Trans

weixin_33971977的博客 438

基于MATLAB的拉盖尔-高斯光束叠加相位模拟

首先,我们需要设置模拟所需的参数,如光腰半径、传播距离、光束的角动量等。其中,(U)表示光束的电场复振幅,(r)和(\phi)分别是极坐标系下的径向和角向坐标,(z)是传播距离,(A)是归一化系数,(w_p)是光束的光腰半径,(L_p^q)是拉盖尔多项式,(k)是波数,(l)是光束的角动量。通过修改模拟参数,如光腰半径、传播距离、角动量等,您可以进一步探索和理解拉盖尔-高斯光束的叠加相位效应。拉盖尔-高斯光束是一种特殊的光束模式,具有广泛的应用领域,包括光学信息处理、激光加工和量子光学等。

m0_47037246的博客 945

Taro React组件使用(5) —— RuiPasswordInput 密码输入框显示隐藏和清空

初始化时,需要将传入的 value 赋值给当前组件的 value, 不能直接修改 props 的 value;在组件内输出组件内的变量时,最好先判断输出函数是否定义,再输出,否则很容易引起报错。

止于至善 891

BestCoder Round #80 A B C hdu5667矩阵快速幂

链接:戳这里 Lucky  Time Limit: 2000/1000 MS (Java/Others)   Memory Limit: 65536/65536 K (Java/Others) 问题描述     Vampire喜欢玄学,尤其喜欢研究幸运数字.      对于一个数字集合S,定义关于S的幸运数字为无法用S中的数相加得到的最小的非负整数(每个数可以使用任意

Cross 591

WblockCloneObjects克隆一个图纸内的实体包括块参照,同名块参照的处理

public static void HeBingTu2(double lieJu, List<string> filePaths) { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; using (DocumentLock docLock = doc.Lock...

1108

BestCoder Round #80 (hdu5665,hdu5666,hdu5667(矩阵快速幂+费马小定理),hdu5668(中国剩余定理))

Lucky 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5665 解题思路: 中文题目: 问题描述 \ \ \ \    Vampire喜欢玄学,尤其喜欢研究幸运数字. \ \ \ \    对于一个数字集合S,定义关于S的幸运数字为无法用S中的数相加得到的最小的非负整数(每个数可以使用任意次). \ \ \ \

piaocoder 1002

RAGFlow体验大提升:使用GPU加速

场景:在正常部署过程中,启动RAGFlow会用到docker-compose.yml文件来启动。但是在实际使用过程中,会发现RAGFlow极其的卡和笨重,给一一种很不好的用户体验,有没有一种可以让RAGFlow加速的呢?进入RAGFlow的docker目录下会有发现有很多docker的配置文件。方法一:选择docker-compose-gpu.yml这个来启动项目。两个方法选其一 ,就会让你的RAGFlow的使用起来非常的丝滑!方法二:在docker-compose.yml末尾加上。

Ven%的博客 3156

精读204页华为的流程管理(文末附下载链接)

链接:https://pan.baidu.com/s/1eEwdBR5c0PIxkOrNhDZcGg?pwd=wha2 提取码:wha2 复制这段内容后打开百度网盘手机App,操作更方便哦。,以提升企业运营效率和竞争力,同时解决了诸多业务痛点,为华为的全球化发展提供了有力支撑。华为的流程管理对其发展起着关键作用,通过构建完善的流程体系,提升了企业运营效率与竞争力。华为的流程管理在企业发展中至关重要,其围绕。,并通过流程变革不断优化。在流程管理过程中,强调。构建了全面的流程体系。

cdfunlove的博客 282

BestCoder Round #80

A题 链接:http://acm.hdu.edu.cn/showproblem.php?pid=5665 官方题解: 因为每个数可以用很多次,所以只要这个集合中有1,那么就可以加出所有的数来. 注意最后要判定一下是否有0. 之前版本的题目描述是用的自然数,后来因为有歧义换成了非负整数. (本来是打算留个自然数当Trick的..sad story..) 我的理解:没考虑到0 悲伤的故事

a709743744的博客 383

优秀的 Verilog/FPGA开源项目介绍(一)-PCIe通信

优秀的 Verilog/FPGA开源项目介绍(一)-PCIe通信今天开始会陆续介绍一些优秀的开源项目,项目基本都是和FPGA或HDL相关的。对于一些找工作或者急需项目经验的人来说,这些项目...

OpenFPGA的博客 8117

HDU 5667 Sequence (BestCoder Round #80 1003)——构造矩阵

构造矩阵 + 矩阵的快速幂 + 基础数论

代码改变世界 1860

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【解题报告】BestCoder Round #80

简略的解题报告。

TRiddle的博客 651

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

BestCoder Round #80 Sequence(HDU5667) 费马小定里和矩阵乘法的应用

Sequence    Accepts: 59    Submissions: 650  Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) 问题描述 \ \ \ \    Lcomyn 是个很厉害的选手,除了喜欢写17kb+的代码题,偶尔还会写

longshanxiaoxuesheng的博客 560

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

hdu 5656 CA Loves GCD(n个任选k个的最大公约数和)

CA Loves GCD    Accepts: 64    Submissions: 535  Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) 问题描述 CA喜欢是一个热爱党和人民的优秀同♂志,所以他也非常喜欢GCD(请在输入法中输入GCD

阳光下的泡沫 1957

poj 3904(莫比乌斯反演)

POJ 3904  题意: 从n个数中选择4个数使他们的GCD = 1,求总共有多少种方法 Sample Input 4 2 3 4 5 4 2 4 6 8 7 2 3 4 5 7 6 8 Sample Output 1 0 34 思路:先求出选择四个数所有的情况,C(4,n) = n * (n-1) * (n-2)

阳光下的泡沫 1842

hdu4549(费马小定理 + 快速幂)

M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) 现在给出a, b, n,你能求出F[n]的值吗?   Input 输入包含多组测试数据; 每组数据占一行,包含3个整数a, b, n( 0   Output 对每组测试数据请输出一

阳光下的泡沫 1422

hdu 5607 BestCoder Round #68 (矩阵快速幂)

题意: graph    Accepts: 9    Submissions: 61  Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) 问题描述 在一个NN个点(标号11~nn),MM条边的有向图上,一开始我在点uu,每一步我会在当

阳光下的泡沫 1221

HDU2256(矩阵)

求(sqrt(2) + sqrt(3)) ^ 2n MOD 1024 强行盗图- -,这公式推得 。。 #include #include using namespace std; const int mod=1024; struct Matri { int a[2][2]; }; Matri Mat; Matri Mul(const Matri &A,const

阳光下的泡沫 1209

全排列hash-康拓展开

这是对很多全排列问题适用的方法,而且还能用于一些题目的判重 第一位是3,当第一位的数小于3时,那排列数小于321 如 123、 213 ,小于3的数有1、2 。所以有2*2!个。再看小于第二位2的:小于2的数只有一个就是1 ,所以有1*1!=1 所以小于321的{1,2,3}排列数有2*2!+1*1!=5个。所以321是第6个小的数。 2*2!+1*1!+0*0!就是康托展开。 例如

阳光下的泡沫 1204

POJ 3233 (矩阵)

题意:对于矩阵A,求A^1 + ...... + A^k 按照矩阵十大经典题的思路大致做了下。 在k为奇数时:  A^( k / 2+1)+ 1) * (A^1 + ....... A^(k/2)) + A^(k/2+1) k为偶数时:(A^(k/2) + 1 )* (A^1 + ................A^(n/2)) 但是超时了,应该是没二分的问题。 最开始试了下:

阳光下的泡沫 1050

hdu 5446(中国剩余+lucas+按位乘)

题意:c( n, m)%M    M = P1 * P2 * ......* Pk Lucas定理是用来求 c(n,m) mod p,p为素数的值。得出一个存余数数组,在结合中国剩余定理求值 其中有个地方乘积可能超范围,所以按位乘(数论方面薄弱啊,学习学习)。 #include #include #include #include #include using namesp

阳光下的泡沫 941

hdu 2254(矩阵)

题意:指定v1,v2,要求计算出在t1,t2天内从v1->v2的走法 思路:可以知道由矩阵求,即将其建图A,求矩阵A^t1 + ...... + A^t2.   A^n后,/*A.xmap[v1][v2]即是从v1到v2要n步 所以先预处理出A^1 -A^10000的情况,后面再注意下细节,计算即可. (每条道路走需要花一天的时间,且不能在某个城市停留,且t1=0时的走法数为0)

阳光下的泡沫 897

hdu 5392

Sample Input 2 3 1 3 2 6 2 3 4 5 6 1   Sample Output 2 6 题意:给一个转置求它的循环长度 题解:分解成循环求最小公倍数 #include #include #include #include #include using namespace std; typedef long lo

阳光下的泡沫 885
上一篇: 南京理工大学第八届程序设计大赛(校外镜像)
Tyuio28
博客等级 码龄11年 12粉丝 279原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值