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运算很恶心,真的... 本题有正反两个思路,一个是正面求解其不能成 ...
随机推荐
- mysql 新建数据库与表
- C# 高性能对象映射(表达式树实现)
前言 上篇简单实现了对象映射,针对数组,集合,嵌套类并没有给出实现,这一篇继续完善细节. 开源对象映射类库映射分析 1.AutoMapper 实现原理:主要通过表达式树Api 实现对象映射 优点: . ...
- Google的C++代码规范
英文版:http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml 中文版:http://zh-google-styleguide ...
- Java bean与Spring、Spring MVC关系
Java Bean Java语言欠缺属性.事件.多重继承功能.所以,如果要在Java程序中实现一些面向对象编程的常见需求,只能手写大量胶水代码.Java Bean正是编写这套胶水代码的惯用模式或约定. ...
- 洛谷P4012 深海机器人问题(费用流)
传送门 图给的好坑……还得倒过来…… 用大佬的图做个示范 我们考虑左图吧 把每一个点向下连边,容量$1$,费用为给出的价值(表示一个机器人可以过去取得标本) 再连一条边,容量$inf$,费用$0$(表 ...
- Squid系统服务脚本
#!/bin/bash # chkconfig: - 90 25 #其中-的意思是所有运行级别 # config: /etc/squid.conf # pidfile: /usr/local/squi ...
- The server of Apache (三)——网页优化
在企业中,部署apache后只采用默认的配置参数,会有很多问题,因为那些配置都是针对以前服务器配置的. 一.网页压缩 1.介绍 配置apache的网页压缩功能,是使用Gzip压缩算法来对apache服 ...
- 【数据结构】单链表&&静态链表详解和代码实例
喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 单链表(Singly Linked List ) 1.1 什么是单链表? 单链表是一种链式存储的结构.它动态的为节点分配存 ...
- bootstrap的使用2
表单控件: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- nvm安装
1.下载安装包,地址:https://github.com/coreybutler/nvm-windows 2.解压后,点击 nvm-setup 安装,一路默认安装,next下去 3.打开安装位置,然 ...