列表

详情


NC25236. 有趣的数字

描述

        从前有个小哥哥Bill非常喜欢编程,但是让他更加心动的是班上那位小姐姐,为了取得小姐姐的欢心,Bill每天刷acm题,只想着找一个机会大发雄威。机会来了!有一天,老师为了提高同学们学习数学的积极性,做了一个小游戏:六位同学分为一组,每个同学心中想着自己最喜欢的数字a,b,c,e,f,g,对于(ax+by+cz)的k次方展开式中,(x^e)(y^f)(z^g)的系数是多少,当游戏开始时参与游戏的人需要在1秒内报出结果是多少。Bill一时兴奋忘了拿电脑,你能在下面帮助他赢得女神的欢心么?

输入描述

输入包含7个整数,分别为a ,b ,c, k ,e ,f, g每两个整数之间用一个空格隔开。(0≤k≤1,000,  0≤e,f,g≤k,且e+f+g=k ,0 ≤a,b,c ≤1000000)

输出描述

输出一行,包含一个整数,表示所求的系数,这个系数可能很大,输出对10007取模后的结果。

示例1

输入:

3 2 1 4 1 2 1

输出:

144

示例2

输入:

1 5 3 3 1 2 0

输出:

75

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++14(g++5.4) 解法, 执行用时: 4ms, 内存消耗: 488K, 提交时间: 2019-04-20 18:33:01

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=10007;
ll ji[2000];
ll fpow(ll y,ll n){
    ll ans=1;
    while(n){
        if(n&1) ans=ans*y%mod;
        y=y*y%mod;
        n >>=1;
    }
    return ans;
}
int main(){
    ll a,b,c,k,e,f,g;
    cin>>a>>b>>c>>k>>e>>f>>g;
    ji[0]=1;
    for(int i=1;i<=1000;i++){
        ji[i]=ji[i-1]*i%mod;
    }
    cout<<ji[k]*fpow(ji[g],mod-2)%mod*fpow(ji[e],mod-2)%mod*fpow(ji[f],mod-2)%mod*fpow(a,e)%mod*fpow(b,f)%mod*fpow(c,g)%mod<<endl;
}

C++11(clang++ 3.9) 解法, 执行用时: 3ms, 内存消耗: 504K, 提交时间: 2020-02-26 13:21:28

#include<bits/stdc++.h>
using namespace std;
#define mod 10007
#define ll long long
ll a,b,c,k,e,f,g;
ll mul(ll x,ll y)
{
	ll ans=1;
	ll a=x%mod;
	for(ll i=y;i;i>>=1)
	{
		if(i&1) ans=ans*a%mod;
		a=a*a%mod;
	}
	return ans%mod;
}
ll jie(ll x)
{
	ll ans=1;
	for(ll i=1;i<=x;++i)
	{
		ans=ans*i%mod;
	}
	return ans%mod;
}
int main()
{
	scanf("%lld%lld%lld%lld%lld%lld%lld",&a,&b,&c,&k,&e,&f,&g);
	printf("%d",jie(k)*(mul(jie(e)*jie(f)*jie(g)%mod,mod-2)%mod)%mod*mul(a,e)*mul(b,f)*mul(c,g)%mod);
}

Python3(3.5.2) 解法, 执行用时: 31ms, 内存消耗: 3560K, 提交时间: 2019-04-20 21:46:20

import math
a,b,c,k,e,f,g=map(int,input().split())
t1=math.factorial(e)
t2=math.factorial(f)
t3=math.factorial(g)
ans=math.factorial(k)
ans=ans//(t1*t2*t3)
ans=ans*pow(a,e)*pow(b,f)*pow(c,g)
print(ans%10007)

上一题