NC202231. 牛牛与组合数学
描述
牛牛并不是一个擅长组合数学的选手,但是这并不妨碍他喜欢做组合数学。虽然他人是菜,但是他嘴巴不菜。
众所周知,计算组合数是组合数学中最简单的事情.现在牛牛遇到了一个难题,给出
,他想知道
是否等于
。
输入描述
一行三个数分别代表.
输出描述
如果,输出
.否则输出
示例1
输入:
4 2 6
输出:
Yes!
C++14(g++5.4) 解法, 执行用时: 23ms, 内存消耗: 1376K, 提交时间: 2020-03-17 19:56:04
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int mod=1e9+7; string p; ll n,m,pp=0,c=1; int main() { cin>>n>>m>>p; for(int i=0; i<p.size(); i++) pp=(pp*10+p[i]-'0')%mod; for(int i=n-m+1; i<=n; i++) c=c*i%mod; for(int i=2; i<=m; i++) pp=pp*i%mod; if(c==pp) puts("Yes!"); else puts("No!"); return 0; }
C++11(clang++ 3.9) 解法, 执行用时: 15ms, 内存消耗: 896K, 提交时间: 2020-02-22 22:38:36
#include<iostream> #include<cstring> using namespace std; #define ll long long const int mod=1e9+7; string p; ll n,m,pp=0,c=1; int main(){ cin>>n>>m>>p; int l=p.size(); for(int i=0;i<l;i++)pp=(pp*10+p[i]-'0')%mod; for(int i=n-m+1;i<=n;i++)c=c*i%mod; for(int i=2;i<=m;i++)pp=pp*i%mod; if(c==pp)puts("Yes!"); else puts("No!"); return 0; }