#include<iostream>
#include<vector>
using namespace std;
struct c
{
vector<int> x;
void clear()
{
for(int i=0;i<x.size();i++)
{
x[i]=0;
}
}
void plus(long long a)
{
int cnt=0;
long long b=a;
while(a!=0)
{
cnt++;
a/=1000000000;
}
a=b;
if(cnt>x.size())
{
int xsize=cnt-x.size();
for(int w=1;w<=xsize;w++)
{
int xxx=0;
x.push_back(xxx);
for(int j=1;j<=x.size();j++)
{
swap(x[j-1],x[j]);
}
}
}
int i=x.size()-1;
while(a>0)
{
cout<<x[i]<<" "<<a%1000000000<<" ";
if(a%1000000000+x[i]>=1000000000)
{
a-=1000000000;
if(i+1==x.size())
{
x.push_back(0);
for(int j=0;j<x.size()-1;j++)
{
swap(x[j],x[j+1]);
}
x[i+1]+=1;
a-=1000000000;
}
else
{
x[i+1]+=1;
a-=1000000000;
}
}
x[i]+=a%1000000000;
a/=1000000000;
cout<<" "<<x[i]<<" "<<endl;
i--;
}
}
}a;
int main()
{
a.clear();
a.plus(9234567891);
//a.plus(9000000000);//a=18234567891
return 0;
}
想做到类似有效位的数据存放,可是最高位似乎并没有初始化,有谁知道吗?求!
看的蒙蒙的,说点题外话,下次要是可以,加上注释可能更好哦!
#include<iostream>
#include<vector>
using namespace std;
struct c
{
vector<int> x;
void clear()
{
for(int i=0;i<x.size();i++)
{
x[i]=0;
}
}
void plus(long long a)
{
int cnt=0;
long long b=a;
while(a!=0)
{
cnt++;
a/=1000000000;
}//算出a需要占用x多少个空间
a=b;
if(cnt>x.size())
{
int xsize=cnt-x.size();
for(int w=1;w<=xsize;w++)
{
int xxx=0;
x.push_back(xxx);
for(int j=1;j<=x.size();j++)
{
swap(x[j-1],x[j]);
}//把0移动到最前面
}
}//如果x小,那么把0加入到最前面
int i=x.size()-1;
while(a>0)
{
cout<<x[i]<<" "<<a%1000000000<<" ";
if(a%1000000000+x[i]>=1000000000)
{
a-=1000000000;
if(i+1==x.size())
{
x.push_back(0);
for(int j=0;j<x.size()-1;j++)
{
swap(x[j],x[j+1]);
}
}//当在最高位时进位
x[i+1]+=1;
a-=1000000000;
}//当需要进位时
x[i]+=a%1000000000;
a/=1000000000;
cout<<" "<<x[i]<<" "<<endl;
i--;
}//加起来
}
void minus(long long a)
{
int i=0,cnt=0,cnt2=0;
long long b=a;
while(a>0)
{
cnt++;
a/=10;
}
a=b;
for(int i=0;i<x.size()-1;i++)
{
cnt2+=10;
}
int change=x[x.size()-1];
while(change>0)
{
cnt2++;
change/=10;
}
//cnt2存放
}
void cout_c()
{
for(int i=0;i<x.size();i++) cout<<x[i];
}
bool empty()
{
}
}a;
//1 10 100 1000 10000 100000 1000000 10000000 100000000 1000000000 10000000000
//2000000000 2000000000 2000000000 2000000000 2000000000 2000000000 2000000000 2000000000 2000000000 2000000000 4000000000
int main()
{
a.clear();
a.plus(9234567891);
//a.plus(9000000000);//a=18234567891
return 0;
}