快速幂 牛客小白月赛1 分元宵

本文探讨了一道元宵节背景下的组合数学问题,通过快速幂运算求解元宵的不同组合方式数量。输入包括元宵馅、元宵皮、桌子和碗的数量,输出在特定条件下元宵组合的总数。

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

题目描述

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

 

输入描述:

输入共一行,五个整数 ς,ϑ,ϖ,ϱ,Λ ,意义同题目描述。

输出描述:

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

示例1

输入

复制

1 2 1 3 998244353

输出

复制

8
#include<bits/stdc++.h>
#define ll long long 
using namespace std;
long long a, b, c, d, mode;
int n;
double e = exp(1);
ll power(ll x, ll n, ll m){//快速幂
    ll res = 1;
    while(n > 0){
        if(n & 1)
            res = (res * x) % m;
        x = (x * x) % m;
        n >>= 1;
    }
    return res;
}
int main(){
    cin >> a >> b >> c >> d >> mode;
	a %= mode;
    b %= mode;
    a = a * b % mode;
	c = c * d ;
    if(a == 0) 
        cout << "0" << endl;
    else 
        cout << power(a, c, mode) << endl;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值