SDNUOJ 1309.啤酒和饮料

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值