题目名称 | 1130. 取余运算 |
---|---|
输入输出 | dmod.in/out |
难度等级 | ★ |
时间限制 | 1000 ms (1 s) |
内存限制 | 128 MiB |
测试数据 | 10 |
题目来源 | Makazeu 于2012-10-10加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:306, 提交:658, 通过率:46.5% | ||||
Sky_miner | 100 | 0.000 s | 0.00 MiB | C++ |
可以的. | 100 | 0.000 s | 0.00 MiB | C++ |
可以的. | 100 | 0.000 s | 0.00 MiB | C++ |
可以的. | 100 | 0.000 s | 0.00 MiB | C++ |
可以的. | 100 | 0.000 s | 0.00 MiB | C++ |
槿柒 | 100 | 0.000 s | 0.00 MiB | C++ |
Hzoi_chairman | 100 | 0.000 s | 0.00 MiB | C++ |
金身人面兽 | 100 | 0.000 s | 0.00 MiB | C++ |
Respawn | 100 | 0.000 s | 0.00 MiB | C++ |
HeSn | 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)); } 我又怎么错了?!!!
seastar
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; } 怎么错了!!!!!!!!!
c1806xy
2019-08-05 16:52
17楼
| ||||
1A
| ||||
300题留念
AAAAAAAAAA
2017-01-23 21:12
15楼
| ||||
退役倒计时。。。
| ||||
看了评论的提示,还是一不小心就爆int了。。。函数里中间变量也要定义成long long
| ||||
| ||||
回复 @GaoErFu : 区别就是这题能用long long
| ||||
8楼说得好
| ||||
|