列表

详情


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;
}

上一题