牛客小白月赛36 C. 杨辉三角(组合数/推柿子)

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

题目描述

小F对杨辉三角颇有研究,他把杨辉三角第nn行的数提出来,从左到右分别为a[0],a[1],...,a[n−1]a[0],a[1],...,a[n−1]。

现在他想知道∑i=0n−1i2×a[i]∑i=0n−1i2×a[i]的值是多少,答案对9982435399824353取模。

输入描述:

输入一个正整数nn,n≤1018n≤1018。

输出描述:

输出题目中式子的值,答案对9982435399824353取模。

示例1

输入

复制

3

输出

复制

6

首先,有:Σi=0nCnn=2n 以及 kCnk=(n1)Cn1k1

原式 = Σi=0n1i2Cn1i=Σi=0n1i×iCn1i=Σi=0n1i×(n1)×Cn2i1=(n1)×Σi=0n1(i1+1)×Cn2i1

拆成两部分:

=(n1)×Σi=1n1Cn2i1+(n1)×Σi=1n1(i1)Cn2i1=(n1)2n2+(n1)(n2)2n3=n(n1)2n3

快速幂搞一下即可。注意特判n = 1, 2的情况,不然会t到妈妈都不认识,以及一定要模全不然可能溢出

#include <bits/stdc++.h>
using namespace std;
#define mod 99824353
long long fpow(long long a, long long b) {
	long long ans = 1;
	for(; b; b >>= 1) {
		if(b & 1) ans = ans * a % mod;
		a = a * a % mod;
	}
	return ans;
}
int main() {
	long long n;
	cin >> n;
	if(n == 1) {
		cout << 0;
		return 0;
	} else if(n == 2) {
		cout << 1;
		return 0;
	}
	long long ans = 0;
	ans = ((n % mod) * ((n - 1) % mod)) % mod * fpow(2, n - 3) % mod;
	cout << ans;
}
//423543523543332


posted @   脂环  阅读(173)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2020-07-16 HDU - 6581 Vacation (贪心+思维+物理)
2020-07-16 CH#46A 磁力块(BFS+分块)
点击右上角即可分享
微信分享提示
主题色彩