原题http://acm.hdu.edu.cn/showproblem.php?pid=4950
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 566 Accepted Submission(s): 231
5 3 2 2 0 0 0 0
Case #1: NO
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <limits.h>
#include <ctype.h>
#include <string.h>
#include <string>
#include <math.h>
#include <algorithm>
#include <iostream>
#include <stack>
#include <queue>
#include <deque>
#include <vector>
#include <set>
#include <map>
using namespace std;
int main()
{
__int64 cas=1;
__int64 h,a,b,k;
while(~scanf("%I64d%I64d%I64d%I64d",&h,&a,&b,&k)){
if(h==0 && a==0 && b==0 && k==0){
break;
}
if(h <= a){
printf("Case #%I64d: YES\n",cas++);
continue;
}
if(a <= b){
printf("Case #%I64d: NO\n",cas++);
continue;
}
if(h-(a-b)*(k-1)-a <= 0){//K回合之内就打败了,不能回血。
printf("Case #%I64d: YES\n",cas++);
continue;
}
if(h-(a-b)*(k)+b < h){
printf("Case #%I64d: YES\n",cas++);
continue;
}
else{
printf("Case #%I64d: NO\n",cas++);
}
}
return 0;
}
原文:http://blog.csdn.net/zcr_7/article/details/38587041