题目名称 1130. 取余运算
输入输出 dmod.in/out
难度等级
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 GravatarMakazeu 于2012-10-10加入
开放分组 全部用户
提交状态
分类标签
数论 分治 快速幂
分享题解
通过:306, 提交:658, 通过率:46.5%
GravatarSky_miner 100 0.000 s 0.00 MiB C++
Gravatar可以的. 100 0.000 s 0.00 MiB C++
Gravatar可以的. 100 0.000 s 0.00 MiB C++
Gravatar可以的. 100 0.000 s 0.00 MiB C++
Gravatar可以的. 100 0.000 s 0.00 MiB C++
Gravatar槿柒 100 0.000 s 0.00 MiB C++
GravatarHzoi_chairman 100 0.000 s 0.00 MiB C++
Gravatar金身人面兽 100 0.000 s 0.00 MiB C++
GravatarRespawn 100 0.000 s 0.00 MiB C++
GravatarHeSn 100 0.000 s 0.00 MiB C++
本题关联比赛
2020级再出发之二进制拆分及运用
关于 取余运算 的近10条评论(全部评论)
#include<bits/stdc++.h>
using namespace std;
long long b,p,k;
int f(int a)
{
if(a==0) return 1;
int t=f(a/2)%k;
t=(t*t)%k;
if(a%2==1) t=(t*(b%k))%k;
return t;
}
int main()
{
freopen("dmod.in","r",stdin);
freopen("dmod.out","w",stdout);
cin>>b>>p>>k;
int b1=b;
b%=k;
printf("%d\n",f(p));
}
我又怎么错了?!!!
Gravatarseastar
2024-07-16 08:29 18楼
#include<bits/stdc++.h>
using namespace std;
long long b,p,k,s,t;
int main()
{
freopen("helpless.in","r",stdin);
freopen("helpless.out","w",stdout);
cin>>b>>p>>k;
s=b%k;
t=1;
for (int i=2;i<=p;i++)
{
s=s*b%k;
if (s==b%k) break;
t++;
}
p=p%t;s=1;
if (p==0) p=t;
for (int i=1;i<=p;i++)
s=s*b%k;
cout<<s;
return 0;
}
怎么错了!!!!!!!!!
Gravatarc1806xy
2019-08-05 16:52 17楼
1A
GravatarJustWB
2017-09-15 21:38 16楼
300题留念
GravatarAAAAAAAAAA
2017-01-23 21:12 15楼
退役倒计时。。。
GravatarZwoi_只会打表抄代码的蒟蒻
2016-11-17 07:29 14楼
看了评论的提示,还是一不小心就爆int了。。。函数里中间变量也要定义成long long
Gravatarliu_runda
2016-02-18 18:48 13楼
Gravatardateri
2016-01-02 19:24 12楼
回复 @GaoErFu : 区别就是这题能用long long
Gravatardateri
2016-01-02 19:24 11楼
8楼说得好
Gravatar521
2016-01-01 22:20 10楼
GravatarFoolMike
2015-10-21 19:18 9楼

1130. 取余运算

★   输入文件:dmod.in   输出文件:dmod.out   简单对比
时间限制:1 s   内存限制:128 MiB

【题目描述】

输入$a,n,p$的值,求$a^n \mod p$的值,其中$a,n,p$不超过int范围。

【输入格式】

输入有一行,三个整数,分别为$a,n,p$。

【输出格式】

输出有一行,一个整数表示$a^n \mod p$的值。

【样例输入】

2 10 9

【样例输出】

7

【来源】

长郡中学$NOIP$ $2004$模拟试题

$POJ$ $1995$ $Raising$ $Modulo$ $Numbers$

《算法竞赛进阶指南》CH0101