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