QR17. 乘方取模
描述
给定非负整数a, b, m,利用基本的算术运算符(+-*/%)以及位运算符,计算a^b mod m
输入描述
一行三个非负整数,空格分隔,分为a b m的值,其中m不为0输出描述
a^b mod m的结果示例1
输入:
2 10 5
输出:
4
C 解法, 执行用时: 1ms, 内存消耗: 360KB, 提交时间: 2021-04-30
#include <stdio.h> int main() { long long a=0; long long b=0; long long m=0; int sum=1; scanf("%lld %lld %lld",&a,&b,&m); a=a%m; while(b){ if(b%2==1) sum=(sum*a)%m; a=(a*a)%m; b=b/2; } printf("%d",sum); return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 356KB, 提交时间: 2019-03-16
#include<stdio.h> int main() { long long a,b,m; int sum=1; scanf("%lld %lld %lld",&a,&b,&m); a=a%m; while(b){ if(b%2==1) sum=(sum*a)%m; a=(a*a)%m; b=b/2; } printf("%d",sum); return 0; }