链接:https://ac.nowcoder.com/acm/contest/11221/C
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
风暴来,黄沙起,绝命沙虫剧毒见。

初始时你的手上有 NN 元 RMB。

交易规则如下:

你通过充值 aa 元可以获得 a\times100a×100 红点和 \min{10000,a\times100\times(M-1)}min{10000,a×100×(M−1)} 绿点,其中 MM 是充值返点倍率。

你每次充值的数量必须是正整数,也就是说不能为零或负数。

你通过出售 bb 红点可以获得 \left\lfloor\dfrac{b}{200}\right\rfloor⌊
200
b

⌋ 元 RMB 和 \left\lfloor\dfrac{b}{10}\right\rfloor⌊
10
b

⌋ 点消费经验。

你通过出售 cc 绿点可以获得 \left\lfloor\dfrac{c}{10}\right\rfloor⌊
10
c

⌋ 点消费经验。

给定 N,MN,M,请回答你最后获得的消费经验是多少。

注意:任何时刻只要你手上有 RMB 或者有红点/绿点你都依次使用并且用光,你不会手上有而不用。
输入描述:
全文第一行输入一个整数 T(1\le T\le10^5)T(1≤T≤10
5
),表示数据组数。

第一行输入两个数 N(1\le N\le10^5),M(1.1\le M\le2.0)N(1≤N≤10
5
),M(1.1≤M≤2.0),分别表示初始拥有的 RMB 数量和充值返点倍率。

数据保证 NN 是正整数,MM 一定是一位小数。
输出描述:
每行输出一个整数,你最后获得的消费经验是多少。
示例1
输入
复制
2
10 1.5
160 2.0
输出
复制
270
5760
说明
对于样例 #1,充入 1010 RMB,获得 10\times100=100010×100=1000 红点和 10\times100\times(1.5-1)=50010×100×(1.5−1)=500 绿点。

花掉它们,获得 \dfrac{1000}{10}+\dfrac{500}{10}=150
10
1000

+
10
500

=150 消费经验和 \dfrac{1000}{200}=5
200
1000

=5 RMB。

充入 55 RMB,获得 500500 红点和 250250 绿点;花掉它们,获得 50+25=7550+25=75 消费经验和 22 RMB。

充入 22 RMB,获得 200200 红点和 100100 绿点;花掉它们,获得 20+10=3020+10=30 消费经验和 11 RMB。

充入 11 RMB,获得 100100 红点和 5050 绿点;花掉它们,获得 10+5=1510+5=15 消费经验。

结算(最终获得):150+75+30+15=270150+75+30+15=270 消费经验。

对于样例 #2,充入 160160 RMB,获得 1600016000 红点和 1000010000 绿点;转换成 8080 RMB 和 26002600 消费经验;

充入 8080 RMB,获得 80008000 红点和 80008000 绿点;转换成 4040 RMB 和 16001600 消费经验;

充入 4040 RMB,获得 40004000 红点和 40004000 绿点;转换成 2020 RMB 和 800800 消费经验;

\cdots⋯

充入 11 RMB,获得 100100 红点和 100100 绿点;转换成 2020 消费经验。

结算(最终获得):2600+1600+800+400+200+100+40+20=57602600+1600+800+400+200+100+40+20=5760 消费经验。

思路 :

  • 直接模拟即可
  • 关于double的精度问题 :double类型在计算时转化为二进制故有损失,例如 double a = 3.0 - 2.6,结果是0.39999999,这就是精度损失
  • 这里模拟的公式中由于m是double类型,因此m - 1也是double类型,会有精度损失
  • 解决方案有两种 :1.依靠乘10(这里保证m只有一位小数)化为整型;2.加一个特别小的数然后向下取整(强转int),注意强转int是在最后整个公式的结果处,而不是double运算处
#include <iostream>
using namespace std;typedef long long ll;int main()
{int _; cin >> _;while (_ -- ){int n;double m;cin >> n >> m;ll r = 0, g = 0;ll res = 0;while (n){r = n * 100, g = min(10000, (int)(n * 100 * (m + 0.00000000000001 - 1)));res += r / 10 + g / 10;n = r / 200;}cout << res << endl;}
}
#include <iostream>
using namespace std;typedef long long ll;int main()
{int _; cin >> _;while (_ -- ){int n;double m;cin >> n >> m;ll r = 0, g = 0;ll res = 0;while (n){r = n * 100, g = min(10000, (int)(n * 10 * (10 * m - 10)));res += r / 10 + g / 10;n = r / 200;}cout << res << endl;}
}

绝命沙虫 精度,double,模拟 牛客白月赛44相关推荐

  1. 深渊水妖 模拟,贪心 牛客白月赛44

    链接:https://ac.nowcoder.com/acm/contest/11221/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52 ...

  2. 变异蛮牛 树,dfs,二分图染色 牛客白月赛44

    链接:https://ac.nowcoder.com/acm/contest/11221/E 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52 ...

  3. 幽暗统领 树的重心 牛客白月赛44

    链接:https://ac.nowcoder.com/acm/contest/11221/F 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52 ...

  4. 顽皮恶魔 牛客白月赛44

    链接:https://ac.nowcoder.com/acm/contest/11221/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52 ...

  5. 牛客白月赛27【题解】

    https://ac.nowcoder.com/acm/contest/6874#question 目录 巨木之森[树的直径] 乐团派对[贪心 / DP] 光玉小镇[状压DP TSP] 巅峰对决[线段 ...

  6. 牛客白月赛26【题解】

    https://ac.nowcoder.com/acm/contest/6013 目录 牛牛爱学习[二分] 牛牛爱数学[一元二次方程求根] 牛牛种花[树状数组] 失忆药水[思维] 牛牛走迷宫[bfs] ...

  7. 牛客白月赛49【题解】

    https://ac.nowcoder.com/acm/contest/11226 目录 法[签到] 佛[暴力枚举] 圣[思维] 法[签到] #include<bits/stdc++.h> ...

  8. 牛客白月赛19【题解】

    https://ac.nowcoder.com/acm/contest/2272 目录 「水」滔天巨浪[双指针] 「木」迷雾森林[DP] 「土」秘法地震[前缀和] 「金」初心如金[思维] 「火」烈火燎 ...

  9. 牛客小白月赛25 C.白魔法师

    牛客小白月赛25 C.白魔法师 题目链接 题目描述 你是一个白魔法师. 现在你拿到了一棵树,树上有 个点,每个点被染成了黑色或白色. 你可以释放一次魔法,将某个点染成白色.(该点不一定是黑色点,也可以 ...

最新文章

  1. 树莓派开发4-串口通讯wiringpi库
  2. Java Lock接口分析之ReentantReadWriteLock
  3. Python入门-day1变量和简单数据类型
  4. Friendly Group Gym - 102769F 2020(并查集)ccpc秦皇岛分站赛
  5. C#编写不安全代码初探
  6. QJson数据用法实例
  7. 程序的内存分配和管理
  8. zabbix添加表达式
  9. 【声源定位】基于matlab不同空间谱估计的声源定位算法比较【含Matlab源码 545期】
  10. 2021年高考成绩查询海南时间,2021年海南高考后多久出成绩,附海南高考成绩查询时间入口方式...
  11. win7录屏_win7/win10屏幕录制教程?
  12. 初探微信摇一摇周边与iBeacon
  13. 创意美食、创意生活,今天我要把创意吃进肚子——邻家壹号创意之旅
  14. python绘制分形图形_Python绘制L-System的分形图
  15. Ubuntu下C语言程序编写与运行
  16. springboot 页面静态化
  17. 42个创意户外广告设计
  18. 未转变者服务器买车指令,未转变者服务器指令大全
  19. 五种开源协议:GPL, LGPL, APACHE, BSD, MIT
  20. Laravel+Metronic后台管理系统开发

热门文章

  1. ABAP 字符串操作
  2. MIRO/MIR7有何差别
  3. 如何清除word复制过来的文字背景色的好方法?
  4. GUI_Download的Codepage参数
  5. SAP如何直接往系统中数据库表插入数据
  6. 如何配note,打补丁
  7. 重磅推出校园疫情填报系统,永洪BI助力疫情防控
  8. html怎么鼠标经过添加蒙版遮罩,js实现鼠标移动到图片产生遮罩效果
  9. 明日之后怎么跳过实名认证_明日之后新手教程能不能跳过 明日之后新手教程玩法介绍...
  10. swift python_单从语法角度讲,Swift 完爆 Java Python 和 C#吗?