I - Lada Priora 卡精度
Source
UESTC 2016 Summer Training #15 Div.2
My Solution
直接算就好了
这个题目的难点是精度损失
1)其中有一个*p%然后求和的地方,这样每次得到一个double对象, 然后求和这样精度的损失比较严重
所以应当想求和, 最后再 /100得到答案
2)此外, 对于if(b >= ans/100) 这样出现浮点数的比较时, 把除的 非负数移到对面去 变成 if(b*100 >= ans)
#include
#include
using namespace std;
typedef long long LL;
const int maxn = 1e6 + 8;
int main()
{
#ifdef LOCAL
freopen("a.txt", "r", stdin);
//freopen("b.txt", "w", stdout);
int T = 2;
while(T--){
#endif // LOCAL
LL b, c, d, k, p, ans = 0;
//double b, c, d, k, p, ans = 0;
scanf("%I64d%I64d%I64d%I64d%I64d", &b, &c, &d, &k, &p);
for(int i = 1; i <= k; i++){ ans += (c + i*d)*p; } //WA...... if(b*100 >= ans){
printf("Insurancen%.12f", b*1.0 - ans/100.0);
}
else{
printf("Cashn%.12f", ans/100.0 - b*1.0);
}
#ifdef LOCAL
printf("n");
}
#endif // LOCAL
return 0;
}
- THE END -
最后修改:2024年11月15日
非特殊说明,本博所有文章均为博主原创,未经许可不得转载。
如经许可后转载,请注明出处:https://prolightsfxjh.com/article/ural-2098-lada-priora/
共有 0 条评论