先至少拿50分
查看原帖
先至少拿50分
1049033
luogu_00楼主2024/10/12 18:02

不会高精度的话就用 unsigned long long ,因为它能够表示的最大整数是 26412^{64}-1 ,而 int 只能表示 23112^{31}-1 ,这样能够在不会高精度算法的前提下最接近 AC 。

#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ull; // unsigned long long 名字太长,用 typedef 起别名
ull fac(int n) { // 阶乘函数
    ull res = 1; // 不要用递归,否则 TLE
    for (int i = 2; i <= n; i++) res *= i; // 任何数乘1等于自身,直接从2开始
    return res;
}
int main() {
    ull S = 0; // 结果,初始化为0
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) S += fac(i);
    cout << S;
    return 0;
}

这样做至少能拿50分,但会高精度算法能AC。

2024/10/12 18:02
加载中...