hdu1753(精度计算)
http://acm.hdu.edu.cn/showproblem.php?pid=1753
#include<stdio.h> #include<string.h> char s[402],t[402],c[402]; int a[402]; int main() { int i,j,k,d,b,n,m,f,w1,w2; while(scanf("%s %s",s,t)>0) { n=strlen(s); m=strlen(t); w1=w2=0; for(i=0;i<n;i++) if(s[i]!='.') if(s[i]!='0') w1=1; for(j=0;j<m;j++) if(t[j]!='.') if(t[j]!='0') w2=1; if(w1==0&&w2==0) printf("0"); else { for(i=0;s[i]!='\0'&&s[i]!='.';i++); for(j=0;t[j]!='\0'&&t[j]!='.';j++); if(i==n) { s[i]='.'; s[i+1]='0'; n+=2; s[n]='\0'; } if(j==m) { t[j]='.'; t[j+1]='0'; m+=2; t[m]='\0'; } d=i; b=j; k=0; while(1) { d--; b--; if(d<0) break; if(b<0) break; c[k++]=s[d]+t[b]; } if(d>=0) while(d>=0) c[k++]=s[d--]; if(b>=0) while(b>=0) c[k++]=t[b--]; k--; for(f=0;k>=0;k--,f++) if(c[k]>57) a[f]=c[k]-48*2; else a[f]=c[k]-48; a[f++]=-32767; while(1) { i++; j++; if(i==n) break; if(j==m) break; a[f++]=s[i]+t[j]-2*48; } if(i<n) while(i<n) a[f++]=s[i++]-48; if(j<m) while(j<m) a[f++]=t[j++]-48; for(i=f-1;i>0;i--) if(a[i]>0) if(a[i]/10>0) { if(a[i-1]>=0) a[i-1]+=a[i]/10; else a[i-2]+=a[i]/10; a[i]=a[i]%10; } for(j=f-1;j>=0;j--) if(a[j]<0) { j--; break; } else if(a[j]!=0) break; for(i=0;i<=j;i++) if(a[i]<0) printf("."); else printf("%d",a[i]); } printf("\n"); } return 0; }
朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。