输入一个数n,输出1,2,3,...,9999(n个9)(利用大数求解)

来源:互联网 发布:corel软件包括 编辑:程序博客网 时间:2024/05/17 13:10
#include<iostream>#include<vector>#include<iterator>#include<string>using namespace std;class bigInt{public:bigInt(){}bigInt(const bigInt &data):v(data.v){}bigInt(string s){int len =s.size();while(len){if(s[len-1]<='9'&&s[len-1]>=0)v.push_back(s[len-1]-'0');elsecout<<"不是数字\n";len--;}}bigInt(int n){for(int i=0;i<n;i++){v.push_back(9);}}bigInt(vector<int> v):v(v){}bigInt operator +(bigInt d){vector<int> data = d.v;bigInt sum;vector<int>::iterator iv = v.begin();vector<int>::iterator idata = data.begin();int x =0;while(iv!=v.end()&&idata!=data.end()){ x = (*iv) + (*idata)+x; sum.v.push_back(x%10); x = x/10; iv++; idata++;}while(iv!=v.end()){x = (*iv) + x;sum.v.push_back(x%10);x = x/10;iv++;}while(idata!=data.end()){x=(*idata) + x;sum.v.push_back(x%10);x = x/10;idata++;}if(x!=0)sum.v.push_back(x);return sum;}bigInt& operator =( bigInt& data){v = data.v;return *this;}bigInt operator ++(){vector<int>::iterator iv = v.begin();int x =1;while(iv!=v.end()){ x = (*iv) +x; *iv = x%10; x = x/10; iv++;}if(x!=0)v.push_back(x);return *this;}bigInt operator ++(int){bigInt pre;pre.v = this->v;vector<int>::iterator iv = v.begin();int x =1;while(iv!=v.end()){ x = (*iv) +x; *iv = x%10; x = x/10; iv++;}if(x!=0)v.push_back(x);return pre;}bool operator <=(bigInt& data){bool isTrue=false;vector<int>::reverse_iterator iv = v.rbegin();vector<int>::reverse_iterator idata = data.v.rbegin();int lenIv = v.size();int lenData = data.v.size();if(lenIv>lenData) isTrue= false;else if(lenIv<lenData) isTrue= true;else{int i=lenIv;while(iv!=v.rend()){if((*iv)>(*idata)){isTrue= false;break; }else if(*iv<*idata){isTrue = true;break; } else  { iv++; idata++; i--; }}if(iv==v.rend()){isTrue=true;}}return isTrue;}friendostream& operator <<(ostream &os,const bigInt &data){copy(data.v.rbegin(),data.v.rend(),ostream_iterator<int,char>(os,""));return os;}private:vector<int> v;};void out(int );int main(){out(3);cout<<endl;//out(3);cout<<endl;}//若输入的数为n,则输出数1,2,3,4,...,9999(到n个9)void out(int n){bigInt end(n);bigInt start("1");for(;start<=end;start++)cout<<start<<",";}