codevs 3054 高精度练习-文件操作
时间限制: 1 s
空间限制: 64000 KB
题目等级 : 钻石 Diamond
题目描述 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[256]; char str[256]; bool pd(int k) { while(strr[++k]) return 1; return 0; } int main() { cin>>n; while(n--) { memset(strr,0,sizeof(strr)); scanf("%s",str); int l=strlen(str); if(str[0]!='-') { for(int i=0;i<l;++i) strr[l-i]=str[i]-48; strr[1]++; int i=1; while(strr[i]>=10) { strr[i+1]+=strr[i]/10; strr[i]%=10; l=max(l,i+1); i++; } for(i=l;i>0;i--) cout<<strr[i]; } if(str[0]=='-') { for(int i=1;i<l;++i) { strr[l-i]=(str[i]-48); } l--; strr[1]--; int i=1; while(strr[i]<0) { strr[i+1]--; strr[i]=9; if(strr[i+1]) l=max(l,i+1); else if(!pd(i+1)) l=i; i++; } if(strr[l]!=0) { cout<<"-"; for(i=l;i>=1;i--) cout<<strr[i]; } else cout<<"0"; } cout<<" "; } }
我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。