您的位置:首页 > 其它

HDU 2685 I won't tell you this is about number theory

2016-04-19 20:17 465 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2685

题意:求gcd(a^m - 1, a^n - 1) mod k

思路:gcd(a^m - 1, a^n - 1) = a^gcd(m, n) - 1

code:

#include <stdio.h>

int gcd(int a, int b)
{
return !b ? a : gcd(b, a%b);
}

int mod_pow(int a, int x, int mod)
{
int tmp = a;
int ret = 1;
while(x) {
if (x & 1) {
ret = ret * tmp % mod;
}
tmp = tmp * tmp % mod;
x >>= 1;
}

return ret;
}

int main()
{
int t, a, m, n, k;
scanf("%d", &t);
while (t--) {
scanf("%d %d %d %d", &a, &m, &n, &k);
int d = gcd(m, n);
int ans = mod_pow(a, d, k);
printf("%d\n", (ans - 1 + k) % k);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: