标签:i++ return names nbsp oss -- print pre 求和
比较容易想到,对于每个a[i]下取整,然后再把它的小数不和取和,那么求和是正的就需要补正的,求和是负的就需要补充负的。这个题是要注意浮点数运算精度问题,用eps卡下一下精度,eps取1e-8就可以。还有下取整上取整函数取到的数还是浮点数。
1 #include <bits/stdc++.h> 2 using namespace std; 3 const int MAXN=1e5+5; 4 const double eps=1e-8; 5 double a[MAXN]; 6 int b[MAXN]; 7 int main() 8 { 9 int n;cin>>n;double sum=0; 10 for(int i=1;i<=n;i++) 11 { 12 scanf("%lf",&a[i]); 13 b[i]=floor(a[i]); 14 sum+=a[i]-b[i]; 15 } 16 for(int i=1;i<=n;i++) 17 { 18 if(fabs(a[i]-b[i])<eps) 19 printf("%d\n",b[i]); 20 else if(fabs(sum-0)>eps) 21 { 22 if(sum>0) 23 { 24 sum--; 25 printf("%d\n",b[i]+1); 26 } 27 else 28 { 29 sum++; 30 printf("%d\n",b[i]-1); 31 } 32 } 33 else printf("%d\n",b[i]); 34 } 35 return 0; 36 }
D. Vus the Cossack and Numbers
标签:i++ return names nbsp oss -- print pre 求和
原文地址:https://www.cnblogs.com/Msmw/p/11113492.html