在最近几场魔兽争霸赛中,赫柏对自己的表现都不满意。
为了尽快提升战力,赫柏来到了雷鸣交易行并找到了幻兽师格丽,打算让格丽为自己的七阶幻兽升星。
经过漫长的等待以后,幻兽顺利升到了满星,赫柏很满意,打算给格丽一些小费。
赫柏给小费是有原则的:
1.最终给格丽的钱必须是5的倍数;
2.小费必须占最终支付费用的5%~10%之间(包含边界)。
升星总共耗费A魔卡,赫柏身上带了B魔卡,赫柏想知道他有多少种支付方案可供选择。
注:魔卡是一种货币单位,最终支付费用=本该支付的+小费
输入描述:
多组测试数据,请处理到文件结束。 对于每组测试数据: 包含两个整数A和B。 保证: 1<=A,B<=2,000,000,000,A<=B。
输出描述:
输出一个整数,代表方案数。
输入例子:
4 100 23 100
输出例子:
0 1方法一:
/*******************************************************
*@time 2016/08/28 0:19
*@place DHU.13#.5005
*****************************************************/
#include<cstdio>
#include<cmath>
int main()
{
int A,B;
while(scanf("%d %d",&A,&B)!=EOF)
{
int up_Num=A/0.9;//付钱的上限
int low_Num=ceil(A/0.95);//付钱的下限
while(low_Num%5!=0&&low_Num<B)//在付钱的范围内找到第一个5的倍数
{
low_Num++;
}
int sloutin=0;
for(int i=low_Num;i<=up_Num&&i<=B;i+=5)//在付钱的范围内找到所有5的倍数
{
sloutin++;
}
printf("%d\n",sloutin);
}
return 0;
}
方法二:
/*******************************************************
*@time 2016/08/28 0:27
*@place DHU.13#.5005
*****************************************************/
#include<cstdio>
#include<cmath>
int main()
{
int A,B;
while(scanf("%d %d",&A,&B)!=EOF)
{
int up_Num=A/0.9;//付钱的上限
int low_Num=ceil(A/0.95);//付钱的下限
int sloutin=0;
if(low_Num<=B)//能够负担的起
{
if(up_Num>B)//上限超过了总钱数
{
sloutin=B/5-low_Num/5;//付钱的范围等于,上限包含的5的倍数的个数,减去下限包含的5的倍数的个数
}
else
{
sloutin=up_Num/5-low_Num/5;
}
if(low_Num%5==0) sloutin++;//对应下限恰好是5的倍数的情况要单独判断
}
printf("%d\n",sloutin);
}
return 0;
}