Given a non-negative number represented as an array of digits, plus one to the number.
The digits are stored such that the most significant digit is at the head of the list.
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
vector<int> plusOne(vector<int> &digits)
{
int len=digits.size();
vector<int> res(digits);
int carrybit=1,i;
for(i=len-1;i>=0;i--)
{
if(carrybit==0)//当没有进位时break
break;
else
{
res[i]+=carrybit;
if(res[i]>=10)
{
carrybit=1;
res[i]-=10;
}else
carrybit=0;
}
}
if(i<0&&carrybit==1)//最高位有进位
res.insert(res.begin(),carrybit);
return res;
}
int main(int argc,char *argv[])
{
freopen("input.txt","r",stdin);
int num;
vector<int> v,res;
cin>>num;
while(num--)
{
int tmp;
cin>>tmp;
v.push_back(tmp);//注意这里每个数占一位,v[i]应该是个个位数
}
res=plusOne(v);//对数组v表示的数加1
for(int i=0;i<res.size();i++)
cout<<res[i]<<" ";
cout<<endl;
return 0;
}