2016"百度之星" - 初赛(Astar Round2B)

1003.杨辉三角+逆元

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <stack>
#include <string>
#include <queue>
#include <vector>
#include <algorithm>
#include <ctime>
using namespace std;

//#define EdsonLin

#ifdef EdsonLin
#define debug(...) fprintf(stderr,__VA_ARGS__)
#else
#define debug(...)
#endif // EdsonLin

typedef long long ll;

const ll inf = (1ll)<<60;
const int MAXN = 2e5+10;
const ll MOD = 1000000007;

ll fac[MAXN],ifac[MAXN];

ll qp(ll base,ll n){
    ll ans = 1;
    while(n){
        if(n&1)ans = ans*base%MOD;
        n /= 2;
        base = base*base%MOD;
    }
    return ans;
}

void init(){
    fac[0] = 1;
    for(int i=1;i<MAXN;i++)
        fac[i] = fac[i-1]*i%MOD;
    for(int i=0;i<MAXN;i++)
        ifac[i] = qp(fac[i],MOD-2);
}

int main(){
    #ifdef EdsonLin
    //freopen("1.in","r",stdin);
    //freopen("1.out","w",stdout);
    int _time_jc = clock();
    #endif // EdsonLin
    init();
    int n,m;
    while(cin>>n>>m){
        if(n<m)swap(n,m);
        n = m+n-4;
        m -= 2;
        ll ans = fac[n]%MOD*ifac[m]%MOD*ifac[n-m]%MOD;
        printf("%lld\n",ans);
    }
    #ifdef EdsonLin
        debug("time: %d\n",int(clock()-_time_jc));
    #endif // EdsonLin

    return 0;
}

时间: 2024-08-18 00:00:40

2016"百度之星" - 初赛(Astar Round2B)的相关文章

Hdu 5696 区间价值(2016百度之星初赛Astar Round2B )(线段树)

思路来源于:http://blog.csdn.net/kk303/article/details/51479423 注意数组用 long long 存,否则WA. /* Problem : Status : By wf, */ #include "algorithm" #include "iostream" #include "cstring" #include "cstdio" #include "string&q

2016百度之星-初赛(Astar Round2A)AII X

Problem Description F(x,m) 代表一个全是由数字x组成的m位数字.请计算,以下式子是否成立: F(x,m) mod k ≡ c Input 第一行一个整数T,表示T组数据. 每组测试数据占一行,包含四个数字x,m,k,c 1≤x≤9 1≤m≤10^10 0≤c<k≤10,000 Output 对于每组数据,输出两行: 第一行输出:"Case #i:".i代表第i组测试数据. 第二行输出“Yes” 或者 “No”,代表四个数字,是否能够满足题目中给的公式.

HDU 5701 中位数计数( 2016&quot;百度之星&quot; - 初赛(Astar Round2B) 思维 + 暴力)

传送门 中位数计数 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 852 Accepted Submission(s): 335 Problem Description 中位数定义为所有值从小到大排序后排在正中间的那个数,如果值有偶数个,通常取最中间的两个数值的平均数作为中位数. 现在有n个数,每个数都是独一无二的,求出每个数在多少个包含

HDU 5698 瞬间移动 (2016&quot;百度之星&quot; - 初赛(Astar Round2B) 1003)

传送门 瞬间移动 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 140 Accepted Submission(s): 66 Problem Description 有一个无限大的矩形,初始时你在左上角(即第一行第一列),每次你都可以选择一个右下方格子,并瞬移过去(如从下图中的红色格子能直接瞬移到蓝色格子),求到第n行第m列的格子有几种方案

2016&quot;百度之星&quot; - 初赛(Astar Round2A)解题报告

此文章可以使用目录功能哟↑(点击上方[+]) 有点智商捉急,第一题卡了好久,看来不服老,不服笨是不行的了...以下是本人目前的题解,有什么疑问欢迎提出 链接→2016"百度之星" - 初赛(Astar Round2A)  Problem 1001 All X Accept: 0    Submit: 0 Time Limit: 2000/1000 mSec(Java/Others)    Memory Limit : 65536 KB  Problem Description F(x,

hdu5696区间的价值 -- 2016&quot;百度之星&quot; - 初赛(Astar Round2B)

Problem Description 我们定义“区间的价值”为一段区间的最大值*最小值. 一个区间左端点在L,右端点在R,那么该区间的长度为(R−L+1). 现在聪明的杰西想要知道,对于长度为k的区间,最大价值的区间价值是多少. 当然,由于这个问题过于简单. 我们肯定得加强一下. 我们想要知道的是,对于长度为1∼n的区间,最大价值的区间价值分别是多少. 样例解释: 长度为1的最优区间为2−2 答案为6∗6 长度为2的最优区间为4−5 答案为4∗4 长度为3的最优区间为2−4 答案为2∗6 长度

2016&quot;百度之星&quot; - 初赛(Astar Round2B)1003 瞬间移动 组合数学+逆元

瞬间移动 Accepts: 1018 Submissions: 3620 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Description 有一个无限大的矩形,初始时你在左上角(即第一行第一列),每次你都可以选择一个右下方格子,并瞬移过去(如从下图中的红色格子能直接瞬移到蓝色格子),求到第nn行第mm列的格子有几种方案,答案对100000000710000000

hdu 5698 瞬间移动(2016&quot;百度之星&quot; - 初赛(Astar Round2B)——数学题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5698 瞬间移动 Accepts: 1018 Submissions: 3620 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Description 有一个无限大的矩形,初始时你在左上角(即第一行第一列),每次你都可以选择一个右下方格子,并瞬移过去(如从下图中的红色格子

2016&quot;百度之星&quot; - 初赛(Astar Round2A) 1004 D Game 区间DP

D Game Problem Description 众所周知,度度熊喜欢的字符只有两个:B 和D. 今天,它发明了一个游戏:D游戏. 度度熊的英文并不是很高明,所以这里的D,没什么高深的含义,只是代指等差数列[(等差数列百科)](http://baike.baidu.com/view/62268.htm)中的公差D. 这个游戏是这样的,首先度度熊拥有一个公差集合{D},然后它依次写下N个数字排成一行.游戏规则很简单: 1. 在当前剩下的有序数组中选择X(X≥2) 个连续数字: 2. 检查1选择