试题 算法训练 A的B的C次方次方

Posted ~晚风微凉~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了试题 算法训练 A的B的C次方次方相关的知识,希望对你有一定的参考价值。

资源限制
内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s
问题描述
  //据说很多人的题目会有一大堆废话,本傻×就不在这里废话了。
  就是叫你算A的B的C次方次方。
  当然了,为了方便起见,把答案%1,000,000,007输出就好。
输入格式
  一行,三个整数A,B,C,以空格隔开。
输出格式
  输出A的B的C次方次方%1,000,000,007。
样例输入
3 4 5
样例输出
763327764
数据规模和约定
  0≤A,B,C≤1,000,000,000

标签:取模问题一直没弄清,这次好好弄下
快速幂与取模(同时)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=1000000007;
ll exp_mod(ll a,ll n,ll b)

    ll t;
    if(n==0)return 1%b;
    if(n==1)return a%b;
    t=exp_mod(a,n/2,b);
    t=(t%b)*(t%b)%b;
    if((n&1)==1)t=(t%b)*(a%b)%b;
    return t;

int main()

    ll a,b,c;
    scanf("%lld %lld %lld",&a,&b,&c);
    ll tmp=0;
    tmp=exp_mod(a,exp_mod(b,c,mod-1),mod);
    printf("%lld",tmp);
    return 0;


注意点:
1.a的b的c次方,求解顺序不能错

2.因为费马小定理中有一条:

所以,在第一次调用exp_mod函数的时候,需要取模mod-1(根据上书定理可得证)

以上是关于试题 算法训练 A的B的C次方次方的主要内容,如果未能解决你的问题,请参考以下文章

算法训练——一元三次方程求解

两道笔试题

C语言试题108之打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数 本身。例如:153 是一个“水仙花数”,因为 153=1 的三次方+5 的三次方+3 的三次方。

C语言蓝桥杯年龄的三次方是四位数,四次方是六位数,是个数正好包含0到9,猜年龄是多少

给定区间[-2的31次方, 2的31次方]内的3个整数AB和C,请判断A+B是否大于C。

NYOJ-102 次方求模