算法入门经典P126(BigInteger+,<,>,<=,>=,!=,==,+=)
2021/7/16 14:35:24
本文主要是介绍算法入门经典P126(BigInteger+,<,>,<=,>=,!=,==,+=),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#include<iostream> using namespace std; #include<vector> #include<cstring> struct BigInteger{ static const int BASE = 100000000; static const int WIDTH = 8; vector<int>s; BigInteger(long long num = 0){ *this = num; } BigInteger operator = (long long num){ s.clear(); do{ s.push_back(num%BASE); num /= BASE; }while(num>0); return *this; } BigInteger operator = (const string&str){//123456789 s.clear(); int x,len = (str.length()-1)/WIDTH + 1;//len=2 for(int i=0;i<len;i++){ int end = str.length()-i*WIDTH;//end=9,1 int start = max(0,end-WIDTH);//start=1,0 sscanf(str.substr(start,end-start).c_str(),"%d",&x); s.push_back(x); } return *this; } BigInteger operator +(const BigInteger&b)const{ BigInteger c; c.s.clear(); for(int i=0,g=0;;i++){ if(g==0&&i>=s.size()&&i>=b.s.size())break; int x = g; if(i<s.size())x += s[i]; if(i<b.s.size())x += b.s[i]; c.s.push_back(x%BASE); g = x/BASE; } return c; } BigInteger operator += (const BigInteger&b){ *this = *this+b; return *this; } bool operator <(const BigInteger&b)const{ if(s.size()!=b.s.size())return s.size()<b.s.size(); for(int i=s.size()-1;i>=0;i--){ if(s[i]!=b.s[i]){ return s[i]<b.s[i]; } } return false; } bool operator >(const BigInteger&b)const{ return b<*this; } bool operator <=(const BigInteger&b)const{ return !(b<*this); } bool operator >=(const BigInteger&b)const { return !(*this<b); } bool operator !=(const BigInteger&b)const{ return b<*this||*this<b; } bool operator ==(const BigInteger&b)const{ return !(b<*this||*this<b); } }; ostream&operator <<(ostream&out,BigInteger&x){ out<<x.s.back(); char buf[20]; for(int i=x.s.size()-2;i>=0;i--){ sprintf(buf,"%08d",x.s[i]); for(int j=0;j<strlen(buf);j++){ out<<buf[j]; } } return out; } istream&operator >>(istream&in,BigInteger&x){ string s; if(!(in>>s)){ return in; } x = s; return in; } int main(){ BigInteger x,y; cin>>x>>y; bool f; f = x<y; cout<<f<<endl; f = x>y; cout<<f<<endl; f = x!=y; cout<<f<<endl; f = x<=y; cout<<f<<endl; f = x>=y; cout<<f<<endl; f = x==y; cout<<f<<endl; return 0; }
这篇关于算法入门经典P126(BigInteger+,<,>,<=,>=,!=,==,+=)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-02Java管理系统项目实战入门教程
- 2024-11-02Java监控系统项目实战教程
- 2024-11-02Java就业项目项目实战:从入门到初级工程师的必备技能
- 2024-11-02Java全端项目实战入门教程
- 2024-11-02Java全栈项目实战:从入门到初级应用
- 2024-11-02Java日志系统项目实战:初学者完全指南
- 2024-11-02Java微服务系统项目实战入门教程
- 2024-11-02Java微服务项目实战:新手入门指南
- 2024-11-02Java项目实战:新手入门教程
- 2024-11-02Java小程序项目实战:从入门到简单应用