题解 | #绝命沙虫#

绝命沙虫

https://ac.nowcoder.com/acm/contest/11221/C

C.绝命沙虫

  • 确实绝了我老命,每次碰到卡精度的东西冲不过去都会直接开摆 这次算是涨了记性,仔细看了一下double的精度问题才发现,double类型在计算时会转化为二进制故有损失,例如 double a = 3.0-2.6结果是0.3999999999999999,这就是精度损失故(m-1)是double类型也会有精度损失alt
  • 从此以后碰到卡精度的一律依靠*10将其化为整型再计算
using namespace std;
typedef long long ll;
ll n,t,ans,inf = 10000;
double m;
int main()
{
    cin>>t;
    while(t--){
        cin>>n>>m;
        ans=0;
        ll num = n,a=0,b=0;//a是红,b是绿
        ll mm=m*10;
        while(num){
            a=num*100;
            b=min(inf,num*10*(mm-10));
            ans+=floor(a/10);
            ans+=floor(b/10);
            num=floor(a/200);
        }
        cout<<ans<<endl;
    }
    return 0;
}


全部评论

相关推荐

真烦好烦真烦:豆包润色了自己没看看吗,再说了,都说豆包是愚蠢且勤快的大学生,ds才是聪明的研究生,怎么敢让豆包写论文的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务