高效计算(a^0+a^1+a^2+...+a^n) % m

news/2024/10/30 19:24:58/

看到群里有人出了一道ACM题,要求计算(a^0 + a^1 + a^2 + ... + a^n) % m的值
其中三个数的取值范围为  0 <= a <= 10^16, 0 <= n <= 10^9, 1 <= m <= 10^9

 

看到这样一道题,首先联想到计算(a^b)%m,后者可以通过分解幂来计算
那前者能不能通过同样的方法来计算呢

 

看下面这个分解过程:

FX( a, n, m ) 为公式一

FXMultiplication( a, h, m ) 为公式二,其中FXMultiplication即要返回公式的值,又要返回 a^(2h)的值,方便继续计算

 

实现代码如下:

其实上面的代码中时间复杂度还有可优化的地方,您看出来了吗?

 


http://www.ppmy.cn/news/318486.html

相关文章

EVM220_A2开发笔记

环境准备流程&#xff08;参考EVM220A2主板手册&#xff09;&#xff1a; 1 在ubuntu环境下安装开发环境 2 安装交叉编译器&#xff08;arm64和m0&#xff09;&#xff0c;这里每次执行一下 source /etc/profile指令&#xff0c;不然默认交叉编译器版本较低&#xff0c;无法编…

二、I/O模型

二、I/O模型 1、概念理论 (1)、阻塞调用与非阻塞调用 ①、阻塞调用是指调用结果返回之前&#xff0c;当前线程会被挂起&#xff0c;调用线程只有在得到结果之后才会返回。 ②、非阻塞调用指在不能立刻得到结果之前&#xff0c;该调用不会阻塞当前线程。 ③、两者的最大区别在于…

A2W

这儿是个关于宏的问题&#xff0c;我曾用过ATL的串转换宏&#xff0c;包括W2A&#xff0c;开始有些东西我还不太明白。为了使用这些宏&#xff0c;必须在函数的开始处用USES_CONVERSION来初始化某些局部变量。用就用吧&#xff0c;但是看看这个宏的定义&#xff0c;它有类似下面…

Java1Java2

7-1 程序改错题1 (5分) 程序改错题。以下代码目标是实现从键盘输入1个整数x&#xff0c;然后根据x的值做不同的计算&#xff0c;输出结果。(程序有错&#xff0c;请改正后提交) import java.util.Scanner; public class Main {public static void main(String args[]) {Scann…

【Java基础】a+=1与a=a+1

偶然在某个地方看到这个问题&#xff0c;第一反应是两者是有区别的&#xff0c;但是要说的很详细&#xff0c;一时又想不起来。所以在此记录下来。 首先&#xff0c;java中整数的默认类型是int型&#xff0c;浮点数的默认类型是double型。 数值的转换分为隐式转换和显式转换&…

data2

VC注释宏是类似这样的宏&#xff1a; {{AFX_MSG_MAP(CDrawView) ON_WM_LBUTTONDOWN() }}AFX_MSG_MAP 是由MFC自动生成的一些被注释的代码&#xff0c;MFC的代码添加工具用它来定位MFC类成员函数或成员变量添加和删除的位置。 注释宏不是C语言的组成部分&#xff0c;可以说它…

Aria2 简介

目录 Aria2 简介配置安装window下安装 aria2图形化界面persepolisAria2GUI(网页版) 常用命令参考 Aria2 简介 Aria2 是一个多平台轻量级&#xff0c;支持 HTTP、FTP、BitTorrent 等多协议、多来源的命令行下载工具。Aria2 可以从多个来源、多个协议下载资源&#xff0c;最大的…

ARIMA模型介绍

什么是 ARIMA模型 ARIMA模型的全称叫做自回归移动平均模型&#xff0c;全称是(ARIMA, Autoregressive Integrated Moving Average Model)。也记作ARIMA(p,d,q)&#xff0c;是统计模型(statistic model)中最常见的一种用来进行时间序列 预测的模型。 1. ARIMA的优缺点 优点&…