http://codevs.cn/problem/3054/

题目描述 Description

 

输入一组数据,将每个数据加1后输出

输入描述 Input Description

输入数据:两行,第一行为一个数n,第二行为n个数据

输出描述 Output Description

输出数据:一行,为处理过的数据

样例输入 Sample Input

5

-1 2 100 -5 14

样例输出 Sample Output

0 3 101 -4 15

数据范围及提示 Data Size & Hint

数据范围:对60%为数据,ni≤32767

对100%为数据,ni≤10255

n<=500

#include <iostream>
#include <cstring>
#include <cstdio> using namespace std; int n,strr[];
char str[]; bool judge(int k)
{
while(strr[++k])
return ;
return ;
} int main()
{
cin>>n;
while(n--)
{
memset(strr,,sizeof(strr));
scanf("%s",str);
int l=strlen(str);
if(str[]!='-')
{
for(int i=;i<l;++i)
strr[l-i]=str[i]-;
strr[]++;
int i=;
while(strr[i]>=)
{
strr[i+]++;
strr[i]%=;
l=max(l,i+);
i++;
}
for(i=l;i>;i--)
cout<<strr[i];
}
if(str[]=='-')
{
for(int i=;i<l;++i)
strr[l-i]=str[i]-;
strr[]--;
int i=;
while(strr[i]<)
{
strr[i+]--;
strr[i]+=;
if(strr[i+])
l=max(l,i+);
else
if(!judge(i+))
l=min(l,i+);
i++;
}
if(strr[l-]!=)
{
cout<<"-";
for(i=l-;i>=;i--)
cout<<strr[i];
}
else cout<<"";
}
cout<<" ";
}
  return 0;
}
05-19 13:33