Time Limit: 1000 MS Memory Limit: 32768 KB
Total Submission(s): 848 Accepted Submission(s): 253
Description
啤酒每罐2.3元,饮料每罐1.9元。小明买了若干啤酒和饮料,一共花了N元。请你计算他买了几罐啤酒和几罐饮料(罐数为整数)。
Input
一个double型数据N(0<=N<=20000)
Output
输出啤酒和饮料的罐数,如果存在多组结果按照啤酒数从大到小排列;如果没有解答输出"No Solution"
Sample Input
82.3
Sample Output
30 7 11 30
Source
Unknown
Key:直接相等的话,它会在位数上出问题。
dev上死活无法显示 30 7 这组数据(抓狂!就因为这个卡了好久),但是AC没问题。(无语住了)
附上AC代码:
#include<iostream>
using namespace std;
const double beer=2.3,drink=1.9;
double z=0,y=0;
int a=0,b=0,i=0,j=0,k=0;//bear 有a瓶,drink有b瓶
int main()
{
while(cin>>z)
{
a=(z/beer);//bear的最大瓶数
k=0;
for(i=a;i>=0;i--)//这就是从大到小了
{
y=z-i*beer;//余额
b=y/drink;
if( b*drink+i*beer>=z-0.00000001 && b*drink+i*beer<=z+0.00000001 )
{
cout<<i<<" "<<b<<endl;
k++;
}
}
if(k==0)
cout<<"No Solution"<<endl;
}
return 0;
}