【高精度模板】【高精加减乘没有除】
来源:互联网 发布:vue.js 编辑:程序博客网 时间:2024/04/30 19:54
其实我从小就不喜欢高精度……
Code:
#include<bits/stdc++.h>using namespace std;const int maxn=1e3+10;typedef long long LL;struct HP{int len,s[maxn],f;HP(){clear();}void clear(){memset(s,0,sizeof(s));len=1;f=1;}HP operator=(const char *num){if(*num=='-')f=-1;while(*num=='0'||*num=='-')num++;len=strlen(num);if(!len){s[len++]=0;return *this;}for(int i=0;i<len;i++)s[i]=num[len-i-1]-'0';return *this;}HP operator=(const int num){char c[20];sprintf(c,"%d",num);return *this=c;}HP operator+(const HP &b)const{HP c;c.len=0;for(int i=0,g=0;g||i<max(len,b.len);i++){int x=g;if(i<len)x+=s[i];if(i<b.len)x+=b.s[i];c.s[c.len++]=x%10;g=x/10;}return c;} HP operator-(HP b){ HP c;c.len=0; if(*this<b){ c=b-*this;c.f=-1;return c; }for(int i=0,g=0;i<len;i++){ int x=s[i]-g; if(i<b.len)x-=b.s[i]; if(x>=0)g=0; else{ g=1;x+=10; }c.s[c.len++]=x; }c.clean(); return c; } HP operator*(const HP &b)const{HP c;c.len=len+b.len;c.f=((f==-1)^(b.f==-1))?-1:1;for(int i=0;i<len;i++)for(int j=0;j<b.len;j++)c.s[i+j]+=s[i]*b.s[j];for(int i=0;i<c.len;i++){c.s[i+1]+=c.s[i]/10;c.s[i]%=10;}c.clean(); return c; }bool operator<(const HP &b)const{ if(len!=b.len)return (len<b.len)^(f==-1); for(int i=len-1;i>=0;i--) if(s[i]!=b.s[i])return (s[i]<b.s[i])^(f==-1); return 0^(f==-1); }bool operator==(const HP &b)const{if(len!=b.len||f!=b.f)return false;for(int i=0;i<len;i++)if(s[i]!=b.s[i])return false;return true;}void clean(){while(len>1&&s[len-1]==0)len--;if(len==1&&s[0]==0)f=1;}void print(){if(f==-1)putchar('-');for(int i=len-1;i>=0;i--)printf("%d",s[i]);}int toint(){int res=0;for(int i=0;i<len;i++)res=res*10+s[i];return res;}LL toLL(){LL res=0;for(int i=0;i<len;i++)res=res*10+s[i];return res;}};int main(){char s1[maxn],s2[maxn];scanf("%s%s",s1,s2);HP a,b;a=s1;b=s2;(a*b).print();return 0;}
0 0
- 【高精度模板】【高精加减乘没有除】
- 【模板】高精度--加减乘
- pascal 高精度压位(加减乘&高精除单精)
- 【模板】高精度(加减乘)
- 【模板】高精度 加减乘 重载法
- 【高精度计算】加减乘模板(水)
- 高精度 加、减、乘、除 模板
- 高精度加减乘模版
- 高精度加减乘运算
- 高精度(加减乘)改
- 高精度加,减,乘,除,取模,模板
- 转载高精度加减乘除法
- 高精度加减乘法模板
- 高精度之高精除低精
- POJ-1405 Heritage-高精度加减乘
- 高精度模板总结(string 实现加、减、乘、除)常用版
- [模板]高精度加、减、乘
- 高精度除法(高精除高精)
- java 集合
- BAT文件语法和技巧(bat文件的编写及使用)
- [Topcoder]SRM632 div2 题解
- 位运算总结
- java日期类型互转
- 【高精度模板】【高精加减乘没有除】
- Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
- B树、B-树、B+树、B*树
- 移位实现除法(除数不是2的幂次方)
- 详解Oracle临时表的几种用法及意义
- 运行时环境
- 网络运维词汇汇总
- TopLanguage › {读书} 有关读书求知的一些想法
- hadoop2.4 安装教程