• JZOJ 3431. 【GDOI2014模拟】网格


    一天一次的规律题或组合数学题
    然而这种复杂规律都有不少人能“打表可得”??
    答案 (inom{n+m}{m}-inom{n+m}{m-1})

    (Code)

    #include<cstdio>
    #include<iostream>
    using namespace std;
    typedef long long LL;
    
    LL n , m , fx[5005] , fy[5005] , ans[5005][2];
    
    inline LL gcd(LL x , LL y){return (y == 0 ? x : gcd(y , x % y));}
    inline void Mul(LL f , int x)
    {
    	LL g = 0;
    	for(register int i = 1; i <= ans[0][x]; i++)
    		ans[i][x] = ans[i][x] * f + g , g = ans[i][x] / 10 , ans[i][x] %= 10;
    	while (g) ans[++ans[0][x]][x] = g , g = ans[ans[0][x]][x] / 10 , ans[ans[0][x]][x] %= 10;
    }
    inline void Sub()
    {
    	for(register int i = 1; i <= ans[0][0]; i++)
    	{
    		if (ans[i][0] < ans[i][1]) ans[i][0] += 10 , ans[i + 1][0] -= 1;
    		ans[i][0] -= ans[i][1];
    	}
    	while (ans[ans[0][0]][0] == 0 && ans[0][0] > 1) --ans[0][0];
    }
    int main()
    {
    	scanf("%lld%lld" , &n , &m);
    	int cnt1 = 0 , cnt2 = 0;
    	for(register int i = n + m; i >= n + 1; i--) fx[++cnt1] = i;
    	for(register int i = 2; i <= m; i++) fy[++cnt2] = i;
    	for(register int i = 1; i <= cnt1; i++)
    		for(register int j = 1; j <= cnt2; j++)
    		if (fy[j] != 1)
    		{
    			LL d = gcd(fx[i] , fy[j]);
    			fx[i] /= d , fy[j] /= d;
    			if (fx[i] == 1) break;
    		}
    	ans[++ans[0][0]][0] = 1;
    	for(register int i = 1; i <= cnt1; i++) Mul(fx[i] , 0);
    	
    	cnt1 = cnt2 = 0;
    	for(register int i = n + m; i >= n + 2; i--) fx[++cnt1] = i;
    	for(register int i = 2; i <= m - 1; i++) fy[++cnt2] = i;
    	for(register int i = 1; i <= cnt1; i++)
    		for(register int j = 1; j <= cnt2; j++)
    		if (fy[j] != 1)
    		{
    			LL d = gcd(fx[i] , fy[j]);
    			fx[i] /= d , fy[j] /= d;
    			if (fx[i] == 1) break;
    		}
    	ans[++ans[0][1]][1] = 1;
    	for(register int i = 1; i <= cnt1; i++) Mul(fx[i] , 1);
    	Sub();
    	for(register int i = ans[0][0]; i; i--) printf("%lld" , ans[i][0]);
    	printf("
    ");
    }
    
  • 相关阅读:
    JavaScript学习总结(七)Ajax和Http状态字
    JavaScript学习总结(六)数据类型和JSON格式
    JavaScript学习总结(五)原型和原型链详解
    JavaScript学习总结(四)function函数部分
    JavaScript学习总结(三)BOM和DOM详解
    微信小程序canvas绘制海报,并且实现图片保存至相册例子
    微信小程序与webview交互实现支付
    vue-微信支付or支付宝支付片段
    微信小程序授权登录
    微信分享
  • 原文地址:https://www.cnblogs.com/leiyuanze/p/13502806.html
Copyright © 2020-2023  润新知