【高精度】【模板】高精度模板

没有什么好说的,照着模板写就是了,稍微用了点手段,支持负数的减法了

  1 #include<cstdio>
  2 #include<cstring>
  3 #include<string>
  4 #include<algorithm>
  5 #include<vector>
  6 #include<iostream>
  7 using namespace std;
  8 const int maxn=510;
  9 struct bigint
 10 {
 11     int len,s[maxn];
 12     bigint()
 13     {
 14         len=1;
 15         memset(s,0,sizeof(s));
 16     }
 17     bigint(int num)
 18     {
 19         *this=num;
 20     }
 21     bigint(const char *num)
 22     {
 23         *this=num;
 24     }
 25     bigint operator = (int num)
 26     {
 27         char s[maxn];
 28         sprintf(s,"%d",num);
 29         *this=s;
 30         return *this;
 31     }
 32     bigint operator = (const char* num)
 33     {
 34         len=strlen(num);
 35         for(int i=0;i<len;i++) s[i]=num[len-i-1]-‘0‘;
 36         return *this;
 37     }
 38     string str() const
 39     {
 40         string res="";
 41         for(int i=0;i<len;i++) res=(char)(s[i]+‘0‘)+ res;
 42         if(res=="") res="0";
 43         return res;
 44     }
 45     void clean()
 46     {
 47         while(len>1 && !s[len-1])len--;
 48     }
 49     bigint operator + (const bigint &b)const
 50     {
 51         bigint c;
 52         c.len=0;
 53         for(int i=0,g=0;g||i<max(len,b.len);i++)
 54         {
 55             int x=g;
 56             if(i<len) x+=s[i];
 57             if(i<b.len) x+=b.s[i];
 58             c.s[c.len++]=x%10;
 59             g=x/10;
 60         }
 61         return c;
 62     }
 63     bool operator < (const bigint &b)const
 64     {
 65         if(len!=b.len) return len<b.len;
 66         for(int i=len-1;i>=0;i--)
 67         {
 68             if(s[i]!=b.s[i]) return s[i]<b.s[i];
 69         }
 70         return false;
 71     }
 72     bigint operator - (const bigint &b)
 73     {
 74         bigint c;c.len=0;
 75         for(int i=0,g=0;i<len;i++)
 76         {
 77             int x=s[i]-g;
 78             if(i<b.len) x-=b.s[i];
 79             if(x>=0) g=0;
 80             else
 81             {
 82                 g=1;
 83                 x+=10;
 84             }
 85             c.s[c.len++]=x;
 86         }
 87         c.clean();
 88         return c;
 89     }
 90     bigint operator * (const bigint &b)
 91     {
 92         bigint c;
 93         c.len=len+b.len;
 94         for(int i=0;i<len;i++)
 95         {
 96             for(int j=0;j<b.len;j++)
 97             {
 98                 c.s[i+j]+=s[i]*b.s[j];
 99             }
100         }
101         for(int i=0;i<c.len-1;i++)
102         {
103             c.s[i+1]+=c.s[i]/10;
104             c.s[i]%=10;
105         }
106         c.clean();
107         return c;
108     }
109 };
110 istream& operator >> (istream &in,bigint& x)
111 {
112     string s;
113     in>>s;
114     x=s.c_str();
115     return in;
116 }
117 ostream &operator << (ostream &out,const bigint &x)
118 {
119     out<<x.str();
120     return out;
121 }
122 int main()
123 {
124     bigint a,b;
125     cin>>a>>b;
126     if(a<b)
127     {
128         cout<<"-"<<b-a;
129     }
130     else
131     {
132         cout<<a-b;
133     }
134     return 0;
135 }
时间: 2024-10-11 20:40:57

【高精度】【模板】高精度模板的相关文章

模板系列(一) 模板的模板参数

前面我们写过类似的Stack: template <typename T, typename Alloc = std::vector<T> > class Stack { public: void push(const T &); void pop(); T top() const; bool empty() const; private: Alloc _cont; }; 那么我们使用的时候需要这样: Stack<string, list<string>

畅通工程续 (SPFA模板Floy模板)

http://acm.hdu.edu.cn/showproblem.php?pid=1874 SPFA #include <iostream> #include <stdio.h> #include <string.h> #include <stdlib.h> #define N 1000001 using namespace std; int n,m; int v[202],dis[202]; struct node { int x,y,z,next; }

Struts2中使用Velocity模板时模板资源路径配置问题

在Struts2中使用Velocity模板时,如何以相对与Web工程的路径来配置模板资源文件路径这个问题网上千篇一律的来自Velocity官方文档.官方文档中指出如果是Web工程的话,模板的相对路径是工程根路径,今天在使用的时候有如下配置: Velocity.properties(默认在WEB-INF下): resource.loader =file, classclass.resource.loader.description = Velocity Classpath Resource Loa

C++提高1 【泛型编程】函数模板 类模板

[本文谢绝转载] [泛型编程] 函数模板 为什么会有函数模板 现象: 函数的业务逻辑一样 函数的参数类型不一样 [最常用]函数模板  显式的调用 [不常用]类型推导 多个参数,参数定义了必须要用 函数模板,实现int类型数组,char字符串排序: 函数模板 与 普通函数的本质区别 函数模板 和 普通函数在一起 的调用型研究: C++是如何支持函数模板机制的? 函数模板机制结论 类模板 类模板的定义 类模板做函数的参数 类模板的派生成普通类 模板类的派生成模板类 复数类,所有函数都写在类的内部,运

C++:类模板与模板类

6.3 类模板和模板类 所谓类模板,实际上是建立一个通用类,其数据成员.成员函数的返回值类型和形参类型不具体指定,用一个虚拟的类型来代表.使用类模板定义对象时,系统会实参的类型来取代类模板中虚拟类型从而实现了不同类的功能. 定义一个类模板与定义函数模板的格式类似,必须以关键字template开始,后面是尖括号括起来的模板参数,然后是类名,其格式如下: template <typename 类型参数> class 类名{       类成员声明 }; 或者 template <class

函数模板 类模板

摘要:学习函数模板的定义,使用:学习类模板的定义和使用. 函数模板: template <typename 类型参数> 返回类型 函数名(模板形参表) { 函数体 } 特点:1.函数模板可以重载(比如形参数量不同的情况). 2.定义的时候,template <typename 类型参数>到下面一个语句之间不允许插入其他语句! 3.如果程序中有和函数模板名称相同的非函数模板函数,则优先调用它. 例子: #include<iostream> using namespace

Flask Web Development - Flask 模板1 - 模板机制&Jinja2引擎

节选自PartI Chapter3,这个chapter主要讲模板工作原理,这里讲的就是Jinja2这个模板,另外还提到了Flask-Bootstrap及Flask-Moment两个插件,前者对Flask使用Bootstrap做了些封装,后者对moment.js做了些封装.内容较多,估计分开搞. 模板存在的意义 可维护性高的代码是结构良好且整洁的. 当用户在网站注册一个账户时,他在表单里填入邮箱跟密码,并点击提交按钮.在server端就收到一个包含这些数据的request,再由Flask分发到相应

模板(二) 模板语法

一.模板参数列表 模板参数列表是一个逗号分隔的一个或者多个模板参数的列表: template<typename T, typename U> 如上所示,typename T和typename U为模板参数: 二.模板参数 模板参数分为模板类型参数与非类型模板参数两种: 1)模板类型参数:模板类型参数可以看做类型说明符,可以向类类型说明符和内置类型一样使用: 2)非类型模板参数:非类型模板参数可以是一个整型,或者一个指向对象或者函数类型的指针或引用:非类型模板参数用来表示一个值, 需要通过一个特

Django入门示例之被解放的姜戈——03 所谓伊人(模板及模板处理)

在之前的程序中,我们直接生成一个字符串,作为http回复,返回给客户端.这一过程中使用了django.http.HttpResponse(). 在这样的一种回复生成过程中,我们实际上将数据和视图的格式混合了到上面的字符串中.看似方便,却为我们的管理带来困难.想像一个成熟的网站,其显示格式会有许多重复的地方.如果可以把数据和视图格式分离,就可以重复使用同一视图格式了. Django中自带的模板系统,可以将视图格式分离出来,作为模板使用.这样,不但视图可以容易修改,程序也会显得美观大方. 1.模板初

忍不住吐槽类模板、模板类、函数模板、模板函数

最近在查资料,发现了一些blog上写"类模板.模板类.函数模板.模板函数的区别"之类的文章.一看之下,闭起眼睛想想,自己写了这么久C++,知道模板,知道函数,也知道类.如果单独问我,类模板或者模板类,我都认为是采用了模板的类.但不知道这"类模板.模板类.函数模板.模板函数"是什么东西. 仔细看了下文章,忍不住吐槽了.其实就是采用模板的类叫类模板,实例化后叫模板类.采用模板的函数叫函数模板,实例化后叫模板函数.好吧,你赢了.知道模板的都会知道,模板实例化后会由编译器生