ZJNU 2212 - Turn-based game

Mr.Lee每隔1/x s攻击一次,cpu每隔1/y s攻击一次

因为时间与答案无关,最后只看boss受到了多少次攻击

所以可以在每个人的频率上同时乘以xy

即Mr.Lee每隔y s攻击一次,cpu每隔x s攻击一次

这样看虽然时间延长但是结果不变

就可以二分查找出打败boss用时,最后再根据时间判断谁给予的最后一击

二分出用时t,则t%x==0表示cpu给予最后一击

t%y==0表示Mr.Lee给予最后一击

#include<stdio.h>
int main(){
    long long n,x,y,k,l,r,m,d1,d2;
    scanf("%lld%lld%lld",&n,&x,&y);
    while(n--){
        scanf("%lld",&k);
        l=1;
        r=1e15;
        while(l<r){
            m=(l+r)>>1;
            if(m/x+m/y>=k)
                r=m;
            else
                l=m+1;
        }
        d1=r%x;
        d2=r%y;
        if(!d1&&!d2)
            puts("Obviously Ruddy Eye is the first!");
        else if(d1&&!d2)
            puts("I like Ruddy Eye forever!");
        else if(!d1&&d2)
            puts("Spicy chicken computer!");
    }
    
    return 0;
}

 

posted @ 2020-01-28 19:49  StelaYuri  阅读(140)  评论(0编辑  收藏  举报