首页 > 其他分享 >补基础题(快速幂)

补基础题(快速幂)

时间:2024-02-11 12:44:05浏览次数:27  
标签:const matrix ll 基础 long ans include 快速

P1226 【模板】快速幂 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
ll a,b,p;
ll quickpow(ll a,ll b){
    ll ans=1,base=a;
    while(b>0){
        if(b&1) ans=ans*base%p;
        base=base*base%p;
        b>>=1;
    }
    return ans;
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>a>>b>>p;
    cout<<a<<"^"<<b<<" mod "<<p<<"="<<quickpow(a,b)%p<<endl;
    
    return 0;
}

补上很久之前写的快速幂矩阵乘法,那个时候还很花哨

P1962 斐波那契数列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

/*坚持就是胜利---for BUAA*/
#include<bits/stdc++.h>
//#include<iostream>
//#include<algorithm>
//#include<vector>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
#define endl "\n"
const int INF=0x3f3f3f3f;
const int mod=1e9+7;
ll n;
struct matrix{
    ll c[3][3];
    matrix(){
        memset(c,0,sizeof(c));
    }    
    matrix operator*(const matrix &b)const{
        matrix t;
        for(int i=1;i<=2;i++){
            for(int j=1;j<=2;j++){
                for(int k=1;k<=2;k++){
                    t.c[i][j]=(t.c[i][j]+c[i][k]*b.c[k][j])%mod;
                }
            }
        }
        return t;
    }
}f,a;
void quickpow(ll n){
    f.c[1][1]=f.c[1][2]=1;
    a.c[1][1]=a.c[1][2]=a.c[2][1]=1;
    while(n){
        if(n&1){
            f=f*a;
        }
        a=a*a;
        n>>=1;
    }
}
void solve(){
    if(n<=2) cout<<"1"<<endl;
    else{
        quickpow(n-2);
        cout<<f.c[1][1]%mod<<endl;
    }
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>n;
    solve();
    return 0;
}

 

标签:const,matrix,ll,基础,long,ans,include,快速
From: https://www.cnblogs.com/accbulb/p/18013315

相关文章

  • 补基础题(排序)
    2299--Ultra-QuickSort(poj.org)#include<iostream>//归并排序#include<cstring>usingnamespacestd;typedeflonglongll;constintN=500010;inta[N],tmp[N],ans;voidmerge_(lll,llmid,llr){inti=l,j=mid+1,t=0;while(i<=mid&......
  • Go语言的常用基础
    1、核心特性Go语言有一些让人影响深刻的核心特性核心特性,比如:以消息传递模式的并发、独特的_符号、defer、函数和方法、值传递等等,可以查看这篇文章《Go语言-让我印象深刻的13个特性》。首先要记住一些核心特性的用法。1.1、Goroutine协程:独立的栈空间,共享堆空间,比线程更轻量......
  • 快速初始化容器化Gin项目
    Gin是一个使用Go语言开发的Web框架,追求性能和效率。1、使用Gin快速初始化项目创建项目目录:在命令行中创建一个新目录,用于存放项目文件。然后进入该目录:mkdirmy-gin-democdmy-gin-demo初始化Go模块:在项目目录中运行以下命令以初始化Go模块。这会创建一个go.mo......
  • 5小步快速集成使用sentinel限流
    在微服务系统中,缓存、限流、熔断是保证系统高可用的三板斧。本文通过如下几个小步骤,即可让spring项目快速集成使用sentinel实现系统限流。1、环境和资源准备sentinel支持许多流控方式,比如:单机限流、熔断降级、集群限流、系统保护规则、黑白名单授权等。本文介绍如何快速集成......
  • 3步让Dubbo项目快速集成Sentinel
    在微服务系统中,缓存、限流、熔断是保证系统高可用的三板斧。本文通过3个步骤,让Dubbo项目快速集成使用Sentinel实现系统限流。本文接着《5小步快速集成使用sentinel限流》,继续介绍Dubbo项目如何快速集成使用Sentinel。1、环境和资源准备环境和资源准备,参看《5小步快速集成使用......
  • 中小企业IT基础设施要不要上Kubernetes
    中小企业IT基础设施在要不要上Kubernetes?相信你肯定有这样的疑问,先说我的结论:根据我在主导中小企业上云过程的综合实践,建议直接上kubernetes。概况我主导的上云企业研发情况概况:研发人员30人左右,云上费用规模100万左右,项目工程数80个左右,占用k8spod数量300左右,QPS-300多。在上......
  • 补基础题(贪心-1)
    Problem-2037(hdu.edu.cn)#include<iostream>/*活动安排的贪心问题*/#include<algorithm>usingnamespacestd;constintN=110;intn;structnode{intbegin,end;};boolcmp(nodeaa,nodebb){returnaa.end<bb.end;}signedmain(){ios::......
  • Spring 基础
    Spring基础参考资料Spring的核心包括2个概念:控制反转(IOC)和面向切面(AOP)。我的SpringBoot学习之路!-知乎(zhihu.com)控制反转(IOC)的核心思想:把主动权交给用户。狂神说Java:《Spring5最新完整教程IDEA版》《SpringBoot最新教程IDEA版》开源项目:Spr......
  • IDEA下载其他版本及快速破解
    其他版本的下载IDEA下载-https://www.jetbrains.com/zh-cn/idea/download/other.htmljetbrains公司其他产品也是类似的路径,如Pycharm下载-https://www.jetbrains.com/zh-cn/pycharm/download/other.html,将路径中的idea换成pycharm。安装及破解安装就是正常安装,一直下一步就行,......
  • Qt6.0开发 第二章 GUI程序设计基础
    第二章GUI程序设计基础窗口相关文件按照第一章所给提示创建一个新project,我们得到了下面的代码:widget.h:#ifndefWIDGET_H#defineWIDGET_H#include<QWidget>QT_BEGIN_NAMESPACEnamespaceUi{classWidget;}QT_END_NAMESPACEclassWidget:publicQWidget{......