NOIP2017普及组复赛T1《成绩》noip2017¶
这到题,写一下的原因是,精度问题
以同一个代码为例,在Windows DEV C++下的执行结果,和NOILinux下的执行结果不同。
代码如下:
#include <bits/stdc++.h>
using namespace std;
int ans;
int main()
{
freopen("chengji.in", "r", stdin);
// freopen("chengji.out", "w", stdout);
int a, b, c;
cin >> a >> b >> c;
cout << a << ' ' << b << ' ' << c << endl;
a = a * 0.2;
b = b * 0.3;
c = c * 0.5;
ans = a + b + c;
cout << a << ' ' << b << ' ' << c << endl;
cout << ans << endl;
fclose(stdin);
fclose(stdout);
return 0;
}
测试数据:
Windows DEV C++,执行结果
NOILinux下的执行结果
所以,这种写法是可取的。要么就用double类型整,要么就是int类型,20%的计算是*20/100