社区讨论
求大佬帮忙看高精哪里写挂了
P1018[NOIP 2000 提高组] 乘积最大参与者 4已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @mi6up5wx
- 此快照首次捕获于
- 2025/11/20 11:07 4 个月前
- 此快照最后确认于
- 2025/11/20 11:07 4 个月前
非常感谢orz
CPPstruct bigint{
int a[200];
bigint(){
memset(a, 0, sizeof(a));
a[0] = 1;
}
bigint(long long x){
memset(a, 0, sizeof(a));
int ptr = 0;
while(x != 0){
a[++ptr] = x % MOD;
x /= MOD;
}
a[0] = ptr;
}
bigint operator=(const bigint& right){
this->a[0] = right.a[0];
for(int i = 1; i <= right.a[0]; ++i){
this->a[i] = right.a[i];
}
return *this;
}
bigint operator*(int right){
bigint ans(*this);
unsigned long long d = 0;
for(int i = 1; i <= ans.a[0]; ++i){
d += ans.a[i] * right;
ans.a[i] = d % MOD;
d /= MOD;
}
int ptr = ans.a[0] + 1;
while(d != 0){
ans.a[ptr++] = d % MOD;
d /= MOD;
}
for(int i = ptr; ans.a[ptr] == 0; --ptr);
ans.a[0] = (ptr == 0) ? 1 : ptr;
return ans;
}
void print(){
printf("%d", a[a[0]]);
if(a[0] != 1)for(int i = a[0] - 1; i >= 1; --i){
printf("%04d", a[i]);
}
printf("\n");
}
bool operator <(const bigint& right){
if(this->a[0] != right.a[0])return this->a[0] < right.a[0];
for(int i = a[0]; i >= 1; --i){
if(this->a[i] != right.a[i])return this->a[i] < right.a[i];
}
return false;
}
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...