tanghg @ 2022-06-03 08:12:46
rt。
#include <iostream>
#include <cstring>
using namespace std;
const long long MAX=100;
typedef int ll;
struct Bigint{
ll l,a[MAX];
Bigint(ll x=0){
memset(a,0, sizeof(a));
for (l = 1; x ; ++l) {
a[l]=x%10;
x/=10;
}
l--;
}
int &operator[](ll i){
return a[i];
}
void fla(ll L){
l=L;
for (int i = 1; i <=l ; ++i) {
a[i+1]=a[i]/10;
a[i]%=10;
}
while (!a[l]){
l--;
}
}
void out(){
for (int i = max(1,l); i >=1 ; --i) {
cout<<a[i];
}
}
Bigint operator+(Bigint a,Bigint b){
Bigint c;
ll l= max(a.l,b.l);
for (int i = 1; i <=l ; ++i) {
c[i]+=a[i]+b[i];
}
c.fla(l+1);
return c;
}
Bigint operator*(Bigint a, ll b){
Bigint c;
ll l=a.l;
for (int i = 1; i <=l ; ++i) {
c[i]=a[i]*b;
}
c.fla(l+11);
return c;
}
};
int main() {
Bigint a(0),f(1);
ll n;
cin>>n;
for (int i = 1; i <=n ; ++i) {
f= f * i;
a= a + f;
}
a.out();
return 0;
}
还有一个小问题。
Bigint(ll x=0){
memset(a,0, sizeof(a));
for (l = 1; x ; ++l) {
a[l]=x%10;
x/=10;
}
l--;
}
这一段代码有什么作用呢,为什么要这样初始化? 第一次发帖,有什么问题我会改。
by Super_Supper @ 2022-06-03 09:03:40
这是把一个整型的数转换成 Bigint
类型的构造函数
by tanghg @ 2022-06-03 09:04:30
@sb_yyds 我懂了,也就是说转换一下。
by Super_Supper @ 2022-06-03 09:04:51
@Tanghaoge 第二次的代码不是 CE 了吗?
by tanghg @ 2022-06-03 09:06:08
@sb_yyds 不是的,我在dev里面没加cstring,改了之后可以输出
by _6872_ @ 2022-06-03 09:09:28
这个马蜂我服了,跟我们教练有一拼
by Super_Supper @ 2022-06-03 09:10:20
@Tanghaoge 可是我在 VSCode 里面没有输出?
by tanghg @ 2022-06-03 09:11:08
@sb_yyds 你要加一个cstring吧,我没改
by tanghg @ 2022-06-03 09:11:50
@6872 我的马蜂真的很奇特的QWQ
by Super_Supper @ 2022-06-03 09:12:03
@Tanghaoge 还是没有
by _6872_ @ 2022-06-03 09:12:58
@Tanghaoge 哈哈,理解理解,其实马蜂奇特也挺好看的