P2393 yyy loves Maths II
# yyy loves Maths II
## 题目背景
上次蒟蒻 redbag 可把 yyy 气坏了,yyy 说他只是小学生,蒟蒻 redbag 这次不坑他了。
## 题目描述
redbag 给了 yyy 很多个数,要 yyy 计算这些数的和。
必须要快,redbag 只给了 yyy $1$ 秒的时间!!!
## 输入格式
一行,很多个数。
## 输出格式
一行,一个实数(四舍五入精确到 $5$ 位小数),表示这些数的和。
## 样例 #1
### 样例输入 #1
```
1
```
### 样例输出 #1
```
1.00000
```
## 提示
对于 $100\%$ 的数据,所有数 $ \le 233,333,333 $,保证在小数点后最多有 $6$ 位数,最多共有 $5\times 10^4$ 个数。
【70分代码】
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iomanip>
#include<iostream>
#include<map>
#include<queue>
#include<string>
#include<vector>
using namespace std;
const int N=1e5+10;
double n,ans;
signed main()
{
while(cin>>n)ans+=n;
cout<<fixed<<setprecision(5)<<ans;
return 0;
}
做完时还在感叹这题太简单了,结果就......
![](https://img-blog.csdnimg.cn/3387aab5047343ddabc44925a863826f.png)
【AC代码】
然后下了个数据突然想到精度不够,换成long double还是不妥。想来想去突然想到可以把小数转换成整数来加,于是......
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iomanip>
#include<iostream>
#include<map>
#include<queue>
#include<string>
#include<vector>
using namespace std;
const int N=1e6;
long double n,ans;
signed main()
{
while(cin>>n)ans+=n*N;
cout<<fixed<<setprecision(5)<<ans/N;
return 0;
}
![](https://img-blog.csdnimg.cn/54f9cd8943f34366bd949d1c5ef2e369.png)