Undertakers @ 2024-10-18 17:56:54
#include <stdio.h>
int main() {
int n,i,j;
double sum=0,mul;
scanf("%d",&n);
for( i = 1; i<=n; i++) {
for(mul=1,j = 1; j<=i; j++) {
mul*=j*1.0;
if(j==i) break;
}
printf("%d!=%.0f ",i,mul);
sum+=mul;
printf("%.0f\n",sum);
}
printf("%.0f",sum);
return 0;
}
by LionBlaze @ 2024-10-18 17:59:40
@Undertakers 没过就是有,过了就是没有。
by a18981826590 @ 2024-10-18 18:00:28
@Undertakers
十年
by 沐咕 @ 2024-10-18 18:06:04
@Undertakers 当你看向数据范围就会发现原来需要使用高精度。
求关
by Undertakers @ 2024-10-18 19:28:27
@沐咕 高精度是什么意思?
by 沐咕 @ 2024-10-18 20:18:42
@Undertakers 6,建议自己上网搜
by AC_kkk0926 @ 2024-10-19 20:54:35
@Undertakers
C++中的高精度运算通常涉及到处理整数的大小超出标准整型(如int或long long)范围的情况。这可以通过以下几种方法实现:
字符串处理: 将大数表示为字符串,然后手动执行加法、减法、乘法、除法等运算。 库函数: 使用第三方库,如GMP或FastDoubleDouble库来实现高精度运算。 自己设计算法: 使用分治法、大数平方根算法等实现高精度运算。 下面是使用字符串处理实现一个简单的高精度整数加法示例:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
// 高精度加法
string precisionAddition(string num1, string num2) {
int len1 = num1.size(), len2 = num2.size();
if (len1 < len2) swap(num1, num2);
int carry = 0;
string result;
for (int i = len1 - 1; i >= 0 || carry; --i) {
int p1 = i < 0 ? 0 : num1[i] - '0';
int p2 = i < len2 - 1 ? num2[i + len1 - len2] - '0' : 0;
int sum = p1 + p2 + carry;
carry = sum / 10;
result.push_back((sum % 10) + '0');
}
reverse(result.begin(), result.end());
return result;
}
int main() {
string num1, num2;
cout << "请输入两个大整数(以空格分隔):" << endl;
cin >> num1 >> num2;
cout << "两数之和为:" << precisionAddition(num1, num2) << endl;
return 0;
}