nyoj 1197——你会加吗?——————【快速幂、分治】
你会加吗?
- 描述
-
给出两个整数A和N,计算(A + A^2 + A^3 + …… + A^(N - 1) + A^N)% 666666。
- 输入
- 多组测试数据。
每组数据包含两个整数A,N(0≤A,N≤10^18)。 - 输出
- 输出(A + A^2 + A^3 + …… + A^(N - 1) + A^N)% 666666是多少,每组数据占一行。
- 样例输入
-
2 5
10 20 - 样例输出
-
62
110 解题思路:对于求解A+A2+A3+A4+A5+An/2+A(n/2+1)...+An。
我们总可以化成:当n%2==1,(A1+A2+A3...+An/2)+An/2*(A1+A2+A3+...An/2)+An。
即(A1+A2+A3...+An/2)*(An/2+1)+An。
当n%2==0,(A1+A2+A3...+An/2)+An/2*(A1+A2+A3+...An/2)。
即(A1+A2+A3...+An/2)*(An/2+1)。
然后就可以分治求解。#include<bits/stdc++.h>
using namespace std;
#define LL long long
const LL mod=666666;
LL Pow(LL a,LL x){ //快速幂
LL ret=1;
while(x){
if(x&1)
ret=ret*a%mod;
a=a*a%mod;
x>>=1;
}
return ret;
}
LL calcu(LL a,LL n){ //分治
if(n==1)
return a;
LL ret=calcu(a,n/2);//分治部分的返回值
ret=ret*(1+Pow(a,n/2))%mod;
if(n%2==1) //n如果为奇数需再加上a^n
ret= (ret+Pow(a,n))%mod;
return ret;
}
int main(){
LL a,n;
while(scanf("%lld%lld",&a,&n)!=EOF){
LL ans= calcu(a%mod,n);
printf("%lld\n",ans);
}
return 0;
}
nyoj 1197——你会加吗?——————【快速幂、分治】的更多相关文章
- FZU 1752 A^B mod C(快速加、快速幂)
题目链接: 传送门 A^B mod C Time Limit: 1000MS Memory Limit: 65536K 思路 快速加和快速幂同时运用,在快速加的时候由于取模耗费不少时间TLE了 ...
- AcWing 225. 矩阵幂求和 (矩阵快速幂+分治)打卡
题目:https://www.acwing.com/problem/content/227/ 题意:给你n,k,m,然后输入一个n阶矩阵A,让你求 S=A+A^2+A^3.+......+A^k 思 ...
- nyoj 102 次方求模【快速幂】
次方求模 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 求a的b次方对c取余的值 输入 第一行输入一个整数n表示测试数据的组数(n<100)每组测试只有一 ...
- POJ3233 Matrix Power Series(矩阵快速幂+分治)
Description Given a n × n matrix A and a positive integer k, find the sum S = A + A2 + A3 + … + Ak. ...
- 瓷砖铺放 (状压DP+矩阵快速幂)
由于方块最多涉及3行,于是考虑将每两行状压起来,dfs搜索每种状态之间的转移. 这样一共有2^12种状态,显然进行矩阵快速幂优化时会超时,便考虑减少状态. 进行两遍bfs,分别为初始状态可以到达的状态 ...
- hdu3293(pell方程+快速幂)
裸的pell方程. 然后加个快速幂. No more tricks, Mr Nanguo Time Limit: 3000/1000 MS (Java/Others) Memory Limit: ...
- poj3233 题解 矩阵乘法 矩阵快速幂
题意:求S = A + A2 + A3 + … + Ak.(mod m) 这道题很明显可以用矩阵乘法,但是这道题的矩阵是分块矩阵, 分块矩阵概念如下:当一个矩阵A中的单位元素aij不是一个数值而是一个 ...
- poj 3070 && nyoj 148 矩阵快速幂
poj 3070 && nyoj 148 矩阵快速幂 题目链接 poj: http://poj.org/problem?id=3070 nyoj: http://acm.nyist.n ...
- C - Rikka with Badminton --- HDU 6425 快速幂加组合数学
---恢复内容开始--- 题目链接: https://vjudge.net/problem/1812693/origin 这题的mod运算很恶心,真的... 本题有正反两个思路,一个是正面求解其不能成 ...
随机推荐
- Vue watch用法
Vue.js 提供了一个方法 watch,它用于观察Vue实例上的数据变动.对应一个对象,键是观察表达式,值是对应回调.值也可以是方法名,或者是对象,包含选项. 例如,同一个组件切换时,不会触发生命周 ...
- docker--基本命令
仅做学习参考,可能有误 part1:启动docker服务 在Windows上使用MySQL时候,有时无法直接使用MySQL -uroot -p 来进入MySQL,这是因为我们没有启动会MySQL服务此 ...
- 【10.2.3】ArcGIS Runtime for Android搭建开发环境过程中问题具体解释
一.Visual Studio Ultimate2012安装过程问题 1.问题描写叙述 安装完毕后,您将看到一条消息,指示安装程序已完毕.但并非全部的功能具有已正确安装.以及下面警告消息: Micro ...
- myeclipse2014 安装maven3.3.9和maven配置本地仓库 及错误修改
结合网上的知识梳理以及自己安装的经验 myeclipse2014 安装maven3.3.9和maven配置本地仓库 及犯的错误修改 成功搞定maven 1,安装 Maven 之前要求先确定你的 J ...
- 【bzoj4709】[Jsoi2011]柠檬 决策单调性+dp
Description Flute 很喜欢柠檬.它准备了一串用树枝串起来的贝壳,打算用一种魔法把贝壳变成柠檬.贝壳一共有 N (1 ≤ N ≤ 100,000) 只,按顺序串在树枝上.为了方便,我们从 ...
- bzoj 3864: Hero meet devil(dp套dp)
题面 给你一个只由\(AGCT\)组成的字符串\(S (|S| ≤ 15)\),对于每个\(0 ≤ .. ≤ |S|\),问 有多少个只由\(AGCT\)组成的长度为\(m(1 ≤ m ≤ 1000) ...
- [集合]线程安全的HashMap
一.一般模式下线程安全的HashMap 默认情况常用的HashMap都是线程不安全的,在多线程的环境下使用,常常会造成不可预知的,莫名其妙的错误.那么,我们如何实现一个线程安全的HashMap呢?其中 ...
- webpack(二)解析es6并打包
一.前言 ECMAScript 6(ES6)的发展速度非常之快,但现代浏览器对ES6新特性支持度不高,所以要想在浏览器中直接使用ES6的新特性就得借助别的工具来实现.Babel是一个广泛使用的转码器, ...
- STM32F0 中 ADC 多通道转换结果相同的问题
前言 前段时间调试 STM32F030 的 ADC,在多通道转换时遇到了奇怪的问题,使用官方的例程和库函数连续转换多个 ADC 通道,得到的几个通道的结果是一样的,解决办法参考了 关于STM32F0系 ...
- day017-------python 类与类的关系
类与类的关系的简单说明 一:类与类的关系 001:依赖关系 002:管理关系 003:继承关系: 二:实例理解: 01:依赖关系: # 植物大战僵尸. 创建一个植物. 创建一个僵尸 # 植物: 名字, ...