博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
my new 高精度模板【高精度】
阅读量:5088 次
发布时间:2019-06-13

本文共 2920 字,大约阅读时间需要 9 分钟。

几个小时码出来的东西。

还不错,貌似没什么bug,只不过有事会玄学水土不服(雾)(例如我校OJ上)。
几分钟就把洛谷试炼场过掉了。
只不过没有压位,有些遗憾,以后还要码一码。 

换了一种代码风格,感觉好一些,但是需要习惯习惯。 

2018.7.30:upd 查了一点bug

#include
#include
#include
using namespace std;const int LEN=1005,MOD=10;char STR[LEN];struct bign{ int len,num[LEN]; bign(){ memset(num,0,sizeof(num)); len=1; } bign operator = (const char s[]){ memset(num,0,sizeof(num)); len=strlen(s); for(int i=len;i>=1;i--){ if(s[len-i]<'0'||s[len-i]>'9'){ num[i]=s[len-i]-'A'+10; } else num[i]=s[len-i]-'0'; } return *this; } bign operator = (int n){ memset(num,0,sizeof(num)); len=0; do{ num[++len]=n%MOD; n/=MOD; }while(n); return *this; } bign operator = (long long n){ memset(num,0,sizeof(num)); len=0; do{ num[++len]=n%MOD; n/=MOD; }while(n); return *this; } bign(const char n[]){ *this=n; } bign(const int n){ *this=n; } bign(const long long n){ *this=n; } bool operator < (const bign &b) const{ if(len!=b.len) return len
=1;i--){ if(num[i]!=b.num[i]){ return num[i]
(const bign &n) const{ return n<*this; } bool operator <= (const bign &n) const{ return !(n<*this); } bool operator >= (const bign &n) const{ return !(*this
1) len--; } bign operator + (const bign &b){ bign c; c.len=max(len,b.len); int jw=0; for(int i=1;i<=c.len;i++){ c.num[i]=num[i]+b.num[i]+jw; jw=c.num[i]/MOD; c.num[i]%=MOD; } if(jw){ c.num[++c.len]=jw; } c.clear(); return c; } bign operator += (const bign &b){ *this=*this+b; return *this; } bign operator - (const bign &b){ bign a=*this,c; c.len=max(a.len,b.len); for(int i=1;i<=c.len;i++){ if(a.num[i]
=1;i--){ yu=yu*10+num[i]; c.num[i]=yu/b; yu%=b; } c.clear(); return c; } bign operator /= (const int &b){ *this=*this/b; return *this; } bign operator / (const bign &b){ bign a=*this,c,tmpb=b; int now; c.len=1; while(tmpb*MOD<=a){ tmpb*=MOD; c.len++; } now=c.len; while(a>=b){ while(tmpb>a){ tmpb/=MOD; now--; } a-=tmpb; c.num[now]++; } c.clear(); return c; } bign operator /= (const bign &b){ *this=*this/b; return *this; } int operator % (const int b) { int yu=0; for(int i=len;i>=1;i--){ yu=(yu*10+num[i])%b; } return yu; } bign operator %= (const int &b){ *this=*this%b; return *this; } bign operator % (const bign &b){ bign a=*this,tmpb=b; while(tmpb*MOD<=a){ tmpb*=MOD; } while(a>=b){ while(tmpb>a){ tmpb/=MOD; } a-=tmpb; } a.clear(); return a; } bign operator %= (const bign &b){ *this=*this%b; return *this; } bign operator ^ (int p){ bign a=1,x=*this; while(p){ if(p&1) a=a*x; x=x*x; p>>=1; } return a; } bign operator ^= (const int &b){ *this=*this^b; return *this; } void in(){ scanf("%s",STR); *this=STR; } void out(){ for(int i=len;i>=1;i--){ if(num[i]<10){ putchar(num[i]+'0'); } else{ putchar(num[i]+'A'-10); } } }};bign a=1;int main(){ for(int i=2;i<=100;i++){ a*=i; } a.out(); return 0;}

 

 

 

转载于:https://www.cnblogs.com/2016gdgzoi471/p/9476917.html

你可能感兴趣的文章
Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)【转】
查看>>
python asyncio 异步实现mongodb数据转xls文件
查看>>
TestNG入门
查看>>
【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
查看>>
IOS-图片操作集合
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>
测试计划
查看>>
Mysql与Oracle 的对比
查看>>
jquery实现限制textarea输入字数
查看>>
Codeforces 719B Anatoly and Cockroaches
查看>>
jenkins常用插件汇总
查看>>
c# 泛型+反射
查看>>
第九章 前后查找
查看>>
Python学习资料
查看>>
jQuery 自定义函数
查看>>
jquery datagrid 后台获取datatable处理成正确的json字符串
查看>>
ActiveMQ与spring整合
查看>>
web服务器
查看>>
第一阶段冲刺06
查看>>
EOS生产区块:解析插件producer_plugin
查看>>