真·纯手撸高精度模板

耗时(50分钟)不压位

内容只有高精度+-*,因为其他我不会写QAQ~

均ACluogu,codevs

#include<bits/stdc++.h>
using namespace std;
const int N =(int)1e5+10;
struct bignum {
	int m[N],len;
	char str[N];
	int ok;
	bignum() {ok=1;len=1,memset(m,0, sizeof(m));}
	void in() {scanf("%s",str);len=strlen(str);for(int i=0;i<len;i++) m[i]=str[len-i-1]-‘0‘;}
	void out() {if(ok==-1) printf("-");for(int i=len-1;i>=0;i--) printf("%c",m[i]+‘0‘);puts("");}
	bool operator <(const bignum &b) const {
		if(len!=b.len) return len<b.len;
		for(int i=len-1;i>=0;i--)
			if(m[i]!=b.m[i]) return m[i]<b.m[i];
		return 0;
	}
};

bignum operator +(bignum a,bignum b) {
	bignum c;
	c.len=max(a.len,b.len);
	for(int i=0;i<c.len;i++) {
		c.m[i]+=(a.m[i]+b.m[i]);
		for(;c.m[i]>=10;c.m[i]-=10,c.m[i+1]++);
	}
	c.len+=(c.m[c.len]!=0);
	return c;
}

bignum operator -(bignum a,bignum b) {
	bignum c;
	int len=max(a.len,b.len);
	if(a<b) swap(a,b),c.ok=-1;
	for(int i=0;i<len;i++) {
		c.m[i]+=(a.m[i]-b.m[i]);
		for(;c.m[i]<0;c.m[i]+=10,c.m[i+1]--);
	}
	for(int i=len;i>=0;i--) if(c.m[i]) {c.len=i+1;break;}
	return c;
}

bignum operator *(bignum a,bignum b) {
	bignum c;
	c.len=a.len+b.len-1;
	for(int i=0;i<a.len;i++)
		for(int j=0;j<b.len;j++) {
			c.m[i+j]+=a.m[i]*b.m[j];
			for(;c.m[i+j]>=10;c.m[i+j+1]+=c.m[i+j]/10,c.m[i+j]%=10);
		}
	for(;c.m[c.len-1];c.m[c.len]+=c.m[c.len-1]/10,c.m[c.len-1]%=10,c.len++);
	c.len--;
	return c;
}

bignum a,b,c;
main() {
	a.in(),b.in();
	c=a+b;
	c.out();
	c=a-b;
	c.out();
	c=a*b;
	c.out();
	return 0;
}
时间: 2024-10-31 23:40:48

真·纯手撸高精度模板的相关文章

纯手撸web框架

纯手撸web框架 一.Web应用的组成 接下来我们学习的目的是为了开发一个Web应用程序,而Web应用程序是基于B/S架构的,其中B指的是浏览器,负责向S端发送请求信息,而S端会根据接收到的请求信息返回相应的数据给浏览器,需要强调的一点是:S端由server和application两大部分构成,如图所示: 上图:Web应用组成 二.手鲁web应用 2.1 基本版 import socket """ @author RansySun @create 2019-10-18-11:

Python Django前奏手撸web框架 基于wsgiref的web框架

基于socke手撸web框架 # 请求首行 b'GET / HTTP/1.1\r\n #GET /index HTTP/1.1\r\n (index)为浏览器请求地址) # 请求头 Host: 127.0.0.1:8080\r\n Connection: keep-alive\r\n Cache-Control: max-age=0\r\n Upgrade-Insecure-Requests: 1\r\n # User-Agent用来标识是不是浏览器 User-Agent: Mozilla/5.

手撸WEB框架

手撸web框架 软件开发的架构 C/S架构: 客户端 / 服务端 B/S架构: 浏览器 / 服务端 bs的本质也是cs HTTP协议 http是一种超文本传输协议 1.四大特性 基于TCP/I P之上作用于应用层 基于请求响应 无状态 (cookie session token..) 无连接 (长连接 websocket ( http 协议的大补丁)) 2.数据格式 请求格式 请求首行(请求方式, 协议版本.) 请求头(是一大堆k: v键值对) 注意请求头和请求体之间的空格\r\n 请求体(真正

编译原理 - 1 手撸状态机词法分析器

感谢vczh轮子叔的坑了的教程,我的编译原理第一次入了个门,词法分析写完了,今后可以看看书继续往下学了. http://www.cppblog.com/vczh/archive/2014/03/02/206014.html 词法分析,就是对于一段代码,把他们分割成一个个的token,同时记录他们的行列号,丢掉不必要的信息,这个词法分析器很简单,简单的状态机就能胜任,用正则就没有自己造轮子的快感了,所以要自己手撸状态机拆token出来. 模仿vczh的语言,我的语言包括了以下要素 标识符:大小写字

php手撸轻量级开发(一)

聊聊本文内容 之前讲过php简单的内容,但是原生永远是不够看的,这次用框架做一些功能性的事情. 但是公司用自己的框架不能拿出来,用了用一些流行的框架比如tp,larveral之类的感觉太重,CI也不顺手,于是整体框架就用之前在幕客上看的这个,顺便自己手动改吧改吧,看哪不爽改哪里,一个精简的框架就出来了. 也在做java,但正是php这种能让人一眼看明白的精简的架构吸引了我,没有过多的设计和复杂的实现,整个项目就是明明白白聚焦于业务就好,怎么爽怎么来就好了. 前置的要求 具有一点php的功底.这个

周末手撸管理系统(一)

周末手撸管理系统(一) 已完成 大体模板 用户登入注册 明天加商品订单商品进去 完成效果图 注册 登入 1.首先进行设置 settings.py """ Django settings for drf_test project. Generated by 'django-admin startproject' using Django 1.11.22. For more information on this file, see https://docs.djangoproj

[Template]高精度模板

重新写一下高精度模板(不要问我为什么) 自认为代码风格比较漂亮(雾 如果有更好的写法欢迎赐教 封装结构体big B是压位用的进制,W是每位长度 size表示长度,d[]就是保存的数字,倒着保存,从1开始 #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; const i

vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件

vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件/库 一提到移动端的下拉刷新上拉翻页,你可能就会想到iScroll插件,没错iScroll是一个高性能,资源占用少,无依赖,多平台的javascript滚动插件.iScroll不仅仅是 滚动.它可以处理任何需要与用户进行移动交互的元素.在你的项目中包含仅仅4kb大小的iScroll,你的项目便拥有了滚动,缩放,平移,无限滚动,视差滚动,旋转功能.iScroll的强大毋庸置疑,本人也非常欢迎大家使用iScr

纯手写wcf代码,wcf入门,wcf基础教程

<pre name="code" class="cpp">/* 中颖EEPROM,使用比较方便,但有个注意点,就是每次无论你写入 什么数据或者在哪个地址写数据,都需要将对 对应的块擦除,擦 除后才能写入成功. */ #define SSPWriteFlag 0x5A #define SSPEraseFlag 0xA5 //数据区 扇形区1 #define ADDR_START1 (uint16)0x100 //数据存储区起始地址 #define ADDR