牛客小白月赛1 C-分元宵(快速幂)

链接:https://www.nowcoder.com/acm/contest/85/C
来源:牛客网

题目描述

毕竟是元宵节,晚上还是要吃几个元宵。 Etéreo 家可是个大家庭,元宵的数量,甚至是餐具的数量,都多的惊人。现在,爱数学的 Etéreo 又来问你有趣的数学题了,快来秒掉它!   Etéreo 家里有  种元宵馅,  种元宵皮,每个元宵可以选择任意一种元宵馅和任意一种元宵皮。同时有  张桌子,每张桌子上放了  只碗,每只碗能放一只元宵。每只碗都要装一只元宵。Etéreo 会告诉你  的值,想请问你有多少种装元宵的方式。答案对  取模。 
两种方式被认为是不同的当且仅当至少有一只碗存在于两种方式的同一个位置但是里面有至少一个元宵不同。 
两个元宵被认为是不同的当且仅当元宵馅不同或者元宵皮不同。 
碗和桌子都是有编号的,但是你不能改变碗或桌子的编号。 
你可以认为碗和桌子都是固定的,你只能改变元宵的种类和位置。

输入描述:

输入共一行,五个整数 
 ,意义同题目描述。

输出描述:

每行一个整数,表示答案。
示例1

输入

1 2 1 3 998244353

输出

8

备注:




 
 
分析:快速幂。刚开始写的是递归的快速幂,结果爆栈了,
改成不是递归的就好了。。。QAQ
 
#include<cstdio>
long long mod;
long long Pow(long long a,long long b)  
{  
    long long res=1; 
    while(b>0)  
    {
        if(b&1)  
            res=res*a%mod;  
        b=b>>1; 
        a=a*a%mod; 
    }  
    return res;  
}  
int main()
{
    long long a,b,c,d;
    scanf("%lld%lld%lld%lld%lld",&a,&b,&c,&d,&mod);
    a%=mod;b%=mod;
    a=a*b%mod;
    printf("%lld\n",Pow(a,c*d));
    return 0;
}
View Code

 

 
 
posted @ 2018-03-17 22:26  ACRykl  阅读(277)  评论(0编辑  收藏  举报