hdu-2685 I won't tell you this is about number theory---gcd和快速幂的性质
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=2685
题目大意:
求gcd(am-1,an-1)%k
解题思路:
对于am-1 = (a - 1) * (1 + a + a2 + ... + am-1)
所以最开始的gcd就为a-1
对于两个1 + a + a2 + ... + am-1和1 + a + a2 + ... + an-1来说,可以找出gcd(m, n)那么久就可以提出gcd
比如:
1 + a + a2 + a3
1 + a + a2 + ... + a5
这两个可以写成(1+a)*(1 + a2) 和(1+a)*(1 + a2+ a4)
就提出公因式(1 + a)
这里公因式如何确定呢?
就是从0一直加到m和n的gcd-1次方,这样的话m和n才可以分解成多个从0---gcd-1的幂之和
所以,gcd(am-1,an-1) = (a-1)*(1 + a + a2 + a3 + ... + ag-1) = ag - 1
上式中g等于gcd(m, n)
也就是这个式子:


#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int pow(int a, int b, int m)
{
int ans = ;
a %= m;
while(b)
{
if(b & )ans = ans * a % m;
a *= a;
a %= m;
b /= ;
}
return ans;
}
int main()
{
int T, a, m, n, k, g;
cin >> T;
while(T--)
{
cin >> a >> m >> n >> k;
g = __gcd(m, n);
int ans = (pow(a, g, k) - ) % k;
ans = (ans + k) % k;
cout<<ans<<endl;
}
return ;
}
hdu-2685 I won't tell you this is about number theory---gcd和快速幂的性质的更多相关文章
- HDU 2685 I won't tell you this is about number theory
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2685 题意:求gcd(a^m - 1, a^n - 1) mod k 思路:gcd(a^m - 1, ...
- hdu 2685 I won't tell you this is about number theory 数论
题目链接 根据公式 \[ gcd(a^m-1, a^n-1) = a^{gcd(m, n)}-1 \] 就可以很容易的做出来了. #include <iostream> #include ...
- HDU 5895 Mathematician QSC(矩阵乘法+循环节降幂+除法取模小技巧+快速幂)
传送门:HDU 5895 Mathematician QSC 这是一篇很好的题解,我想讲的他基本都讲了http://blog.csdn.net/queuelovestack/article/detai ...
- HDU 1005 Number Sequence:矩阵快速幂
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1005 题意: 数列{f(n)}: f(1) = 1, f(2) = 1, f(n) = ( A*f(n ...
- hdu 1005 Number Sequence(矩阵快速幂,找规律,模版更通用)
题目 第一次做是看了大牛的找规律结果,如下: //显然我看了答案,循环节点是48,但是为什么是48,据说是高手打表出来的 #include<stdio.h> int main() { ], ...
- HDU - 1005 Number Sequence (矩阵快速幂)
A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mo ...
- HDU - 6198 number number number(规律+矩阵快速幂)
题意:已知F0 = 0,F1 = 1,Fn = Fn - 1 + Fn - 2(n >= 2), 且若n=Fa1+Fa2+...+Fak where 0≤a1≤a2≤⋯≤a,n为正数,则n为mj ...
- HDU 2685 GCD推导
求$(a^n-1,a^m-1) \mod k$,自己手推,或者直接引用结论$(a^n-1,a^m-1) \equiv a^{(n,m)}-1 \mod k$ /** @Date : 2017-09-2 ...
- HDU 2855 斐波那契+矩阵快速幂
http://acm.hdu.edu.cn/showproblem.php?pid=2855 化简这个公式,多写出几组就会发现规律 d[n]=F[2*n] 后面的任务就是矩阵快速幂拍一个斐波那契模板出 ...
- HDU 2855 (矩阵快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2855 题目大意:求$S(n)=\sum_{k=0}^{n}C_{n}^{k}Fibonacci(k)$ ...
随机推荐
- Swift编程权威指南第2版 读后收获
自从参加工作一直在用OC做iOS开发.在2015年的时候苹果刚推出swift1.0不久,当时毕竟是新推出的语言,大家也都很有激情的学习.不过在学完后发现很难在实际项目中使用,再加上当时公司项目都是基于 ...
- 如何限制html标签input的长度
如何限制html标签input的长度 示例: <form action="/example/html/form_action.asp" method="get&qu ...
- Tool Scripts
1. Function: 16进制转字符串 Create FUNCTION [dbo].[f_hextostr] (@hexstring VARCHAR(max)) RETURNS VARCHAR(m ...
- PD虚拟机修改RemixOS的屏幕分辨率
PD虚拟机修改RemixOS的屏幕分辨率 2017年12月02日02:13:55 by SemiconductorKING 最近要用个移动端APP,手机不方便就想在电脑跑一个,然后装了个以前用过的觉得 ...
- java 并发(五)---AbstractQueuedSynchronizer(5)
问题 : ArrayBlockQueue 和 LinkedBlockQueue 的区别 两者的实现又是怎么样的 应用场景 BlockingQueue 概述 blockingQueue 是个接口,从名字 ...
- nginx+nodejs+mysql+memcached服务器后台架设centos6.5
需要的下面四个工具最好都采用yum安装,不要采用编译安装的方法,因为编译安装会导致某些依赖关系丢失. nginx 作为HTTP和反向代理,处理静态页面,动态服务交由nodejs服务. nodejs作为 ...
- .net core 填坑记之—格式转换问题
最近在将项目从.net 迁移到.net core环境中,迁移完成后,发布于Windows平台上进行测试,所有功能均能正常运行. 为了项目能够在正式环境也能正常运行,提前进行Linux环境部署(Cent ...
- CF Dima and To-do List
B. Dima and To-do List time limit per test 1 second memory limit per test 256 megabytes input standa ...
- Windows系统中Oracle11g R2 版本数据库卸载
1. 停止"服务"中所有的ORCLE服务. 进入服务的方法很多,如: (1)在运行中输入services.msc,然后找到所有跟oracle 有关的服务. (2)开始->设置 ...
- Mac系统丢失管理员
今天把osx变成平行用户,提示说要重启,但是一进来,我靠,自己的管理员用户变成了普通用户.我靠,有这么搞的嘛? 不能安装软件,不能https,不能保存密码,什么也不能做了. 网上一查,找到了几个解决方 ...