矩阵快速幂

快速幂

在这里插入图片描述

#include<iostream>
using namespace std;int main(){int a, b, p;cin>>a>>b>>p;int res = 1 % p;while(b){if(b & 1) res = 1ll * res * a % p;a = 1ll * a * a % p;b >>= 1;}cout<<res;return 0;
}

斐波那契数列

在这里插入图片描述

#include <iostream>
using namespace std;
typedef long long ll;
const int Nmax=10, mod=1e9;struct Matrix
{int n,m;int map[Nmax][Nmax];Matrix(int x,int y){n=x;m=y;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)map[i][j]=0;}Matrix operator * (const Matrix b){Matrix c(n,b.m);if(m==b.n){for(int i=1;i<=c.n;i++)for(int k=1;k<=m;k++)for(int j=1;j<=c.m;j++)c.map[i][j]=(c.map[i][j]+(map[i][k]*b.map[k][j])%mod)%mod;return c;}printf("error!!!!!!!!!!!!!!\n");   return c;}Matrix operator + (const Matrix b){Matrix c(n,m);if(m==b.m && n==b.n){for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)c.map[i][j]=(map[i][j]+b.map[i][j])%mod;return c;}printf("error!!!!!!!!!!!!!!\n");   return c;}void show(){printf("n:%d m:%d\n",n,m);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)printf("%4d%c",map[i][j],j==m?'\n':' ');}
};
int a,b,n;
int work()
{Matrix base(2,2);base.map[1][1]=a,base.map[1][2]=b;base.map[2][1]=1;//base.show();Matrix ans(2,2);ans.map[1][1]=1,ans.map[2][2]=1;if(n<=2)return 0*printf("1\n");n-=2;while(n){if(n&1)ans=ans*base;base=base*base;n>>=1;}Matrix now(2,1);now.map[1][1]=now.map[2][1]=1;//ans.show();ans=ans*now;//now.show();printf("%d\n",ans.map[1][1]);return 0;
}
int main()
{while(~scanf("%d%d%d",&a,&b,&n)){if(!a && !b && !n)break;work(); }return 0;
}

a ^ n + b ^ n

在这里插入图片描述

#include <iostream>
using namespace std;
typedef unsigned long long ll;
const int Nmax=10;
ll a,b,n;struct Matrix
{int n,m;ll map[Nmax][Nmax];Matrix(int x,int y){n=x;m=y;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)map[i][j]=0LLu;}Matrix operator * (const Matrix b){Matrix c(n,b.m);if(m==b.n){for(int i=1;i<=c.n;i++)for(int k=1;k<=m;k++)for(int j=1;j<=c.m;j++)c.map[i][j]=c.map[i][j]+map[i][k]*b.map[k][j];return c;}printf("error!!!!!!!!!!!!!!\n");   return c;}Matrix operator + (const Matrix b){Matrix c(n,m);if(m==b.m && n==b.n){for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)c.map[i][j]=map[i][j]+b.map[i][j];return c;}printf("error!!!!!!!!!!!!!!\n");   return c;}void show(){printf("n:%d m:%d\n",n,m);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)printf("%4llu%c",map[i][j],j==m?'\n':' ');}
};ll work()
{Matrix base(2,2);base.map[1][1]=a,base.map[1][2]=-b;base.map[2][1]=1LLu;//base.show();Matrix ans(2,2);ans.map[1][1]=1LLu,ans.map[2][2]=1LLu;ll newa=a*a-2LLu*b;if(n==2)return newa;if(n==1)return a;if(n==0)return 2LLu;n-=2LLu;while(n){if(n&1LLu)ans=ans*base;base=base*base;n>>=1;}Matrix now(2,1);now.map[1][1]=newa;now.map[2][1]=a;//ans.show();ans=ans*now;//now.show();return ans.map[1][1];
}
int main()
{while(~scanf("%llu%llu%llu",&a,&b,&n)){if(!a && !b && !n)break;printf("%llu\n",work());}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/563026.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言内存函数(1)【memcpy函数的使用与模拟实现】【memmove函数的使用和模拟实现】

关于内存函数有四个函数需要我们学习。分别是memcpy&#xff0c;memmove&#xff0c;memset和memcmp。都在头文件string.h里面。 一.memcpy函数的使用 一提到这个函数&#xff0c;我们可能会联想到strcpy函数&#xff0c;但strcpy函数是针对字符串的拷贝。但是我们在写代码的…

GuLi商城-商品服务-API-三级分类-网关统一配置跨域

参考文档&#xff1a; https://tangzhi.blog.csdn.net/article/details/126754515 https://github.com/OYCodeSite/gulimall-learning/blob/master/docs/%E8%B0%B7%E7%B2%92%E5%95%86%E5%9F%8E%E2%80%94%E5%88%86%E5%B8%83%E5%BC%8F%E5%9F%BA%E7%A1%80.md 谷粒商城-day04-完…

【docker系列】深入理解 Docker 容器管理与清理

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

详细解读开源版Sora视频生成模型

Diffusion Models专栏文章汇总&#xff1a;入门与实战 前言&#xff1a;OpenAI的视频生成模型Sora一经发布就广受全世界的瞩目&#xff0c;上海人工智能实验室最近推出了一个基于Diffusion Transformer的结构的模型Latte&#xff0c;堪称最接近Sora原理的视频生成模型。这篇博客…

鸿蒙Harmony应用开发—ArkTS-ForEach:循环渲染

ForEach基于数组类型数据执行循环渲染。 说明&#xff1a; 从API version 9开始&#xff0c;该接口支持在ArkTS卡片中使用。 接口描述 ForEach(arr: Array,itemGenerator: (item: Array, index?: number) > void,keyGenerator?: (item: Array, index?: number): string …

备战蓝桥杯---牛客寒假算法基础集训6

1.并查集数学 分析&#xff1a; 首先我们知道算数基本定理&#xff0c;如果两个数有大于1的质因子&#xff0c;那么我们就需要把他们放在同一个集合&#xff0c;因此我们可以用欧拉刷出1e6范围内的素数&#xff0c;然后依次看输入的数。 拿202*2*5举例子&#xff0c;我们在求…

在Sequence中缓存Niagara粒子轨道

当Sequence中粒子特效较多时&#xff0c;播放检查起来较为麻烦&#xff0c;而使用Niagara缓存功能可将粒子特效方便的缓存起来&#xff0c;并且还可以更改播放速度与正反播放方向&#xff0c;便于修改。 1.使用Niagara缓存需要先在插件里打开NiagaraSimCaching 2.创建一个常…

【计算机网络篇】数据链路层(3)差错检测

文章目录 &#x1f95a;误码&#x1f354;两种常见的检错技术⭐奇偶校验⭐循环冗余校验&#x1f388;例子 &#x1f95a;误码 误码首先介绍误码的相关概念 &#x1f354;两种常见的检错技术 ⭐奇偶校验 奇校验是在待发送的数据后面添加1个校验位&#xff0c;使得添加该校验…

[MAUI]集成高德地图组件至.NET MAUI Blazor项目

文章目录 前期准备&#xff1a;注册高德开发者并创建 key登录控制台创建 key获取 key 和密钥 创建项目创建JS API Loader配置权限创建定义创建模型创建地图组件创建交互逻辑 项目地址 地图组件在手机App中常用地理相关业务&#xff0c;如查看线下门店&#xff0c;设置导航&…

python环境搭建及特定操作系统注意事项

文章目录 搭建Python环境通用的流程&#xff1a;**1. 下载并安装Python解释器****2. 验证安装****3. 安装包管理器&#xff08;pip&#xff09;****4. 安装必要的开发工具****5. 创建虚拟环境&#xff08;推荐&#xff09;****6. 安装项目所需的库****7. 配置IDE/编辑器** 特定…

简单易用的Nginx代理管理工具:体验便捷配置、高效管理

今天在浏览 GitHub 的时候&#xff0c;我发现了一个用于管理 Nginx 代理服务器的开源工具项目——Nginx Proxy Manager。作为一名后端开发人员&#xff0c;这个项目对我来说无疑是一个非常不错的发现。以往&#xff0c;当我们部署一些开源工具或者自己编写的小项目和小网站时&a…

【深度学习】四种天气分类 模版函数 从0到1手敲版本

引入该引入的库 import torch import torch.nn as nn import matplotlib.pyplot as plt import torch.nn.functional as F import torchvision import torch.optim as optim %matplotlib inline import os import shutil import glob os.environ["KMP_DUPLICATE_LIB_OK&q…