首页 > 其他分享 >大数模板

大数模板

时间:2023-02-03 11:37:16浏览次数:29  
标签:const 大数 int res len BigInt 模板 mod


当成int直接用。

struct BigInt{
const static int mod=10000;
const static int DLEN=4;
int a[100],len; //位数4*100
BigInt()
{
ms(a),len=1;
}
BigInt(int v)
{
ms(a),len=0;
do{
a[len++]=v%mod,v/=mod;
}while(v);
}
BigInt(const char *s)//串输入ss(s)
{
ms(a);
int L=strlen(s);
len=L/DLEN;
if(L%DLEN) len++;
int index=0;
for(int i=L-1;i>=0;i-=DLEN){
int t=0,k=i-DLEN+1;
if(k<0) k=0;
repi(j,k,i) t=t*10+s[j]-'0';
a[index++]=t;
}
}
BigInt operator +(const BigInt &b)const
{
BigInt res;
res.len=max(len,b.len);
repi(i,0,res.len) res.a[i]=0;
repi(i,0,res.len-1){
res.a[i]+=((i<len)?a[i]:0)+((i<b.len)?b.a[i]:0);
res.a[i+1]+=res.a[i]/mod,res.a[i]%=mod;
}
if(res.a[res.len]>0) res.len++;
return res;
}
BigInt operator *(const BigInt &b)const
{
BigInt res;
repi(i,0,len-1){
int up = 0;
repi(j,0,b.len-1){
int temp=a[i]*b.a[j]+res.a[i+j]+up;
res.a[i+j]=temp%mod;
up=temp/mod;
}
if(up!=0) res.a[i+b.len]=up;
}
res.len=len+b.len;
while(res.a[res.len-1]==0&&res.len>1) res.len--;
return res;
}
void output()
{
printf("%d",a[len-1]);
repd(i,len-2,0) printf("%04d",a[i]);
puts("");
}
};


标签:const,大数,int,res,len,BigInt,模板,mod
From: https://blog.51cto.com/u_15952369/6035718

相关文章

  • miller_rabin大素数随机检测模板
    用到两个定理:费马小定理二次探测定理如果是一个素数,,则方程的解为或。对于待检测数在中随机选取次判断是否成立一旦发现不成立则可判定不是素数为了......
  • BZOJ3262 陌上花开(cdq分治模板)
    Description有n朵花,每朵花有三个属性:花形(s)、颜色(c)、气味(m),用三个整数表示。现在要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量。定义一朵花A比另一朵......
  • 大数加法 减法 模板
    加法:#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<vector>#include<stdlib.h>#include<queue>#include<map>#include<set>#include<io......
  • 大数相乘 (模板)
    输入两个不超过200位的大数,输出它们的积输入样例1234567890098765432100输出样例1219326311126352690000  在下面的例子程序中,用a[220]和b[220]分别存放两个乘数,用z[......
  • 大数相乘 (模板)
    输入两个不超过200位的大数,输出它们的积输入样例1234567890098765432100输出样例1219326311126352690000  在下面的例子程序中,用a[220]和b[220]分别存放两个乘数,用z[......
  • 用数组模拟大数快速幂
    #include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<vector>#include<stdlib.h>#include<queue>#include<map>#include<iomanip>#include<ma......
  • 兔子与兔子(hash模板题)
    题意描述:很久很久以前,森林里住着一群兔子。有一天,兔子们想要研究自己的DNA序列。我们首先选取一个好长好长的DNA序列(小兔子是外星生物,DNA序列可能包含26个小写英文字......
  • 洛谷P3865 【模板】ST表
    题目背景这是一道ST表经典题——静态区间最大值请注意最大数据时限只有0.8s,数据强度不低,请务必保证你的每次查询复杂度为 O(1)O(1)题目描述给定一个长度为 NN 的数列,和 ......
  • 10 个免费的Bootstrap Admin 主题,模板收集
    Indesigningwebsitestoday,oneofthemusthaveframeworksisthetwitter bootstrap.Tothosewhodonothaveanexactideaaboutthebenefitofthisframew......
  • 151道B端产品经理面试问题合集(全部有答案)文末送B端简历模板
    我会一直长期给你分享B端产品经理面试问题大全及答案大全,助你斩获心仪offer!请你去工忠号【B端产品经理面试问题及答案】,以免错失后续更多实用的B端产品经理面试技巧!你好,我是......