跳转至

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;
}

测试数据:

img

Windows DEV C++,执行结果

img

NOILinux下的执行结果

img

所以,这种写法是可取的。要么就用double类型整,要么就是int类型,20%的计算是*20/100

img

img