杭电1061问题c++
答案:4 悬赏:50 手机版
解决时间 2021-03-30 10:48
- 提问者网友:夢醒日落
- 2021-03-29 18:02
杭电1061问题c++
最佳答案
- 五星知识达人网友:duile
- 2021-03-29 19:40
思路错了,N太大,直接相乘肯定超时,需改进两点:
乘积的模 等于 模的乘积
平方法快速求指数
#include
int solve(int n)
{
int r = 1, x = n;
while (n) {
x %= 10;
if (n & 0x1) {
r *= x;
r %= 10;
}
x *= x;
n /= 2;
}
return r;
}
int main() {
int n, m;
scanf("%d", &m);
while (m--) {
scanf("%d", &n);
printf("%d
", solve(n));
}
}
乘积的模 等于 模的乘积
平方法快速求指数
#include
int solve(int n)
{
int r = 1, x = n;
while (n) {
x %= 10;
if (n & 0x1) {
r *= x;
r %= 10;
}
x *= x;
n /= 2;
}
return r;
}
int main() {
int n, m;
scanf("%d", &m);
while (m--) {
scanf("%d", &n);
printf("%d
", solve(n));
}
}
全部回答
- 1楼网友:夜余生
- 2021-03-29 23:32
你输入的数太大了吧
- 2楼网友:深街酒徒
- 2021-03-29 22:27
你把这句cout<
- 3楼网友:十年萤火照君眠
- 2021-03-29 20:57
个人认为第8行应该改成 if (a<=0). 我运行了一下,没有问题。就是不知道你想做什么。如果是个进制转换的话,function1就有问题了。但运行是可以的:)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯