暴力做的,19行数据没过,此题是否硬算是否只能用高精度了?
查看原帖
暴力做的,19行数据没过,此题是否硬算是否只能用高精度了?
1523816
thankyou158楼主2024/11/22 19:44

利用公式为n!/i!/(n-i)!。 数据出错点为第19行最中间的最大值,第20行好像都没事。

#include <bits/stdc++.h>
using namespace std;
unsigned long long jie(int l);//阶乘
unsigned long long xie(int l, int r);//分子分母约分的阶乘

int main() {
	int n = 0;
	scanf("%d", &n);//输入
	for (int i = 0; i < n; i++) {
		for (int j = 0; j <= i; j++) {
			unsigned long long a = xie(i, max(j, i - j)), b = jie(min(i - j, j));//调用函数也注意尽量化简了
			printf("%llu ", a / b);

		}
		printf("\n");
	}
}

unsigned long long jie(int l) {
	if (l == 0)
		return 1;
	else {
		int q = 1;
		for (int i = 1; i <= l; i++) {
			q *= i;
		}
		return q;
	}
}

unsigned long long xie(int l, int r) {
	if (l == 0 && r == 0)
		return 1;
	else {
		int q = 1;
		for (int i = r + 1; i <= l; i++) {
			q *= i;
		}
		return q;
	}

}
2024/11/22 19:44
加载中...