极简约版正大数加法
来源:互联网 发布:淘宝店铺类目在哪设置 编辑:程序博客网 时间:2024/04/29 16:01
#include<iostream>
#include<cstring>
#define L 1000000000
class bignum{
private:
int Num[101],Len;
public:
bignum(){Num[0]=0;Len=0;}
friend bignum operator+(bignum a,bignum b){
int i,l1=a.Len,l2=b.Len;
bignum temp;
for(i=0;i<l1||i<l2;i++){
if(i>=l1)temp.Num[i]+=b.Num[i];
else if(i>=l2)temp.Num[i]+=a.Num[i];
else temp.Num[i]+=a.Num[i]+b.Num[i];
if(temp.Num[i]>=L){
temp.Num[i+1]=1;
temp.Num[i]%=L;
}else temp.Num[i+1]=0;
}
temp.Len=i+temp.Num[i];
return temp;
}
void operator=(int x){
Num[0]=x;
Len=1;
}
bool operator==(int x){
if(Len>1)return 0;
return Num[0]==x;
}
int cmp(bignum a){
if(a.Len!=Len){
if(Len>a.Len)return 1;
return -1;
}
int i,s=Len;
for(i=s-1;i>=0;i--){
if(Num[i]>a.Num[i])return 1;
if(Num[i]<a.Num[i])return -1;
}
return 0;
}
void print(){
int i;
printf("%d",Num[Len-1]);
for(i=Len-2;i>=0;i--){
printf("%09d",Num[i]);
}
printf("/n");
}
void get(){
char str[101];
int o=0,s,ten=1;
Len=0;
scanf("%s",str);
s=strlen(str);
while(s--){
o+=(str[s]-48)*ten;
ten*=10;
if(ten==1e9||s==0){
Num[Len]=o;
Len++;
o=0;ten=1;
}
}
}
};
- 极简约版正大数加法
- DataGridView 简约版
- 自制简约版秘密
- 简约版git命令
- 简约版.vimrc
- "二十进制数加法"
- OJ_1137 浮点数加法
- 大数加法--回文数
- 简单数加法
- 大数浮点数加法
- 高精度数算法 - - 加法
- 浮点数加法
- 浮点数加法
- Project2010 教程(简约版)
- 程序书写规范(简约版)
- 仿小米时钟-简约版
- 正大--异国创业
- 再见了!正大科技
- 利用 DirectShow 开发自己的 Filter
- oracle判断列名是否存在
- 前端要给力之:URL应该有多长?
- 高级引导装载程序
- 在 AllUserData table 中查找 "people or group"
- 极简约版正大数加法
- typedef 和#define定义别名的区别
- Closure Compiler 高级模式及更多思考
- Linux的ROOT密码忘记的解决办法
- 文件服务器监控之File System Auditor
- 创建记录键盘动作的全局钩子DLL
- nginx 集群配置 nginx 反向代理配置 nginx php 集群
- bb_ant_tools.jar 使用示例
- nginx upstream的几种配置方式