您的位置:首页 > 其它

3054 高精度练习-文件操作

2016-06-03 19:46 309 查看

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

数据改了7次终于改对了

分类标签 Tags 点此展开

#include<cstdio>
#include<iostream>
#include<cstring>
#define ref(i,x,y)for(int i=x;i<=y;i++)
#define def(i,x,y)for(int i=x;i>=y;i--)
using namespace std;
int lena,lenb,lenc,p,t,a[1010],b[1010],c[1010];
char a1[1010];
bool flag=0;
int main()
{
scanf("%d",&t);
while(t--){
memset(a1,0,sizeof a1);
memset(a,0,sizeof a);
memset(b,0,sizeof b);
memset(c,0,sizeof c);
scanf("%s",a1);
lena=strlen(a1);lenb=1;
lenc=max(lena,lenb);b[1]=1;
if(a1[0]=='-'&&a1[1]=='1'&&a1[2]=='\0'){printf("0 ");continue;}
if(a1[0]=='-'){
flag=1;
def(i,lena-1,1) a[++p]=a1[i]-48;
lena--;p=0;
}
else
ref(i,0,lena-1) a[lena-i]=a1[i]-48;
if(!flag){
ref(i,1,lenc){
c[i]+=a[i]+b[i];
c[i+1]+=c[i]/10;
c[i]%=10;
}
int j=lenc+1;
while(c[j]==0&&j>1) j--;
def(i,j,1) printf("%d",c[i]);
printf(" ");
}
else{
printf("-");flag=0;
ref(i,1,lena){
if(a[i]<b[i]){
a[i+1]--;a[i]+=10;
}
c[i]=a[i]-b[i];
}
int j=lena+1;
while(c[j]==0&&j>1) j--;
def(i,j,1) printf("%d",c[i]);
printf(" ");
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: