1. 程式人生 > >2014年第五屆——第一題:啤酒和飲料(水題不水)(注意浮點數精度)

2014年第五屆——第一題:啤酒和飲料(水題不水)(注意浮點數精度)

啤酒每罐2.3元,飲料每罐1.9元。小明買了若干啤酒和飲料,一共花了82.3元。
我們還知道他買的啤酒比飲料的數量少,請你計算他買了幾罐啤酒。

注意:答案是一個整數。請通過瀏覽器提交答案。
不要書寫任何多餘的內容(例如:寫了飲料的數量,新增說明文字等)。

思路:水題不水,本來我的程式碼是這樣的。

#include<iostream>
using namespace std;

int main(){

for(int y=2;;y++){
    for(int x=1;x<y;x++){
        if(2.3*x+1.9*y==82.3){
            cout
<<x<<" "<<y<<endl; return 0; } } } return 0; }

反覆思考覺得程式碼邏輯沒有錯,應該錯在細節處理上,於是上網查了別人的做法,發現他們沒有直接“==”,而是採用數學上極限的思想,判斷結果是否落在82.3的領域上。
於是我的程式碼改成以下形式,果然出結果了。

#include<iostream>
using namespace std;
#define eps 1e-8

int main(){

for(int y=2;;y++){
    for
(int x=1;x<y;x++){ if(2.3*x+1.9*y>=(82.3-eps)&&2.3*x+1.9*y<=(82.3+eps)){ cout<<x<<" "<<y<<endl; return 0; } } } return 0; }

別人程式碼:

#include <math.h>  
#define eps 1e-8  
int main()  
{  
 int x,y,flag=0
; for(x=1;x<36;x++) { for(y=1;y<44;y++) { if(fabs((2.3*x+1.9*y)-82.3)<eps&&x<y) { printf("%d\n",x); flag=1; break; } } if(flag==1) break; } return 0; }

總結:判斷浮點數是否相等時,通常不使用“==”、“!=”之類的運算子,而是用數學函fabs()求兩數之差絕對值,再與自定義eps(通常為1e-6、1e-8)比較。

相關推薦

2014——第一啤酒飲料()注意點數精度

啤酒每罐2.3元,飲料每罐1.9元。小明買了若干啤酒和飲料,一共花了82.3元。 我們還知道他買的啤酒比飲料的數量少,請你計算他買了幾罐啤酒。 注意:答案是一個整數。請通過瀏覽器提交答案。 不要書寫任何多餘的內容(例如:寫了飲料的數量,新增說明文字等)。

藍橋杯初賽-啤酒飲料

啤酒和飲料 標題:啤酒和飲料 啤酒每罐2.3元,飲料每罐1.9元。小明買了若干啤酒和飲料,一共花了82.3元。 我們還知道他買的啤酒比飲料的數量少,請你計算他買了幾罐啤酒。

問題 1436: [藍橋杯][2014]地宮取寶

題目描述 X  國王有一個地宮寶庫。是  n  x  m  個格子的矩陣。每個格子放一件寶貝。每個寶貝貼著價值標籤。  地宮的入口在左上角,出口在右下角。  小明被帶到地宮的入口,國王要求他只能向右或向下行走。  走過某個格子時,如果那個格子中的寶貝價值比小明手中任意寶貝價

c語言網-1431-[藍橋杯][2014]分糖果

題目描述 問題描述 有n個小朋友圍坐成一圈。老師給每個小朋友隨機發偶數個糖果,然後進行下面的遊戲: 每個小朋友都把自己的糖果分一半給左手邊的孩子。 一輪分糖後,擁有奇數顆糖的孩子由老師補給1個糖果,從而變成偶數。 反覆進行這個遊戲,直到所有小朋友的糖果數都相同為止。 你的任

[藍橋杯][2014]分糖果

問題描述 有n個小朋友圍坐成一圈。老師給每個小朋友隨機發偶數個糖果,然後進行下面的遊戲: 每個小朋友都把自己的糖果分一半給左手邊的孩子。 一輪分糖後,擁有奇數顆糖的孩子由老師補給1個糖果,從而變成偶數。 反覆進行這個遊戲,直到所有小朋友的糖果數都相同為止。 你的任務是預測在已

[藍橋杯][2014]蘭頓螞蟻

蘭頓螞蟻,是於1986年,由克里斯·蘭頓提出來的,屬於細胞自動機的一種。 平面上的正方形格子被填上黑色或白色。在其中一格正方形內有一隻“螞蟻”。 螞蟻的頭部朝向為:上下左右其中一方。 螞蟻的移動規則十分簡單: 若螞蟻在黑格,右轉90度,將該格改為白格,並向前移一格; 若螞蟻在白格,

2014藍橋杯C/C++程式設計本科B組決賽 生物晶片(程式設計大)

2014年第五屆藍橋杯C/C++程式設計本科B組決賽題目彙總: 生物晶片 X博士正在研究一種生物晶片,其邏輯密集度、容量都遠遠高於普通的半導體晶片。 博士在晶片中設計了 n 個微型光源,每個光源

2014藍橋杯JAVA/JAVA++程式設計本科B組決賽 出棧次序(結果填空)

出棧次序 X星球特別講究秩序,所有道路都是單行線。一個甲殼蟲車隊,共16輛車,按照編號先後發車,夾在其它車流中,緩緩前行。 路邊有個死衚衕,只能容一輛車通過,是臨時的檢查站,如圖【p1.png】所示。 X星球太死板,要求每輛路過的車必須進入檢查站,也可能不檢查就放行,也可能仔細檢查。 如果車輛進

2014藍橋杯C/C++程式設計本科B組決賽 出棧次序(結果填空)

2014年第五屆藍橋杯C/C++程式設計本科B組決賽題目彙總: 出棧次序 X星球特別講究秩序,所有道路都是單行線。一個甲殼蟲車隊,共16輛車,按照編號先後發車,夾在其它車流中,緩緩前行。 路邊有

2014藍橋杯B組(C/C++)預賽題目及個人答案(歡迎指正)

1.標題:啤酒和飲料     啤酒每罐2.3元,飲料每罐1.9元。小明買了若干啤酒和飲料,一共花了82.3元。     我們還知道他買的啤酒比飲料的數量少,請你計算他買了幾罐啤酒。     注意:答案是一個整數。請通過瀏覽器提交答案。     不要書寫任何多餘的內容(例如:

藍橋杯2014決賽C_C++程式設計本科B組

1.年齡巧合 小明和他的表弟一起去看電影,有人問他們的年齡。小明說:今年是我們的幸運年啊。我出生年份的四位數字加起來剛好是我的年齡。表弟的也是如此。已知今年是2014年,並且,小明說的年齡指的是

2014藍橋杯試題(Java本科B組)

1.標題:武功祕籍     小明到X山洞探險,撿到一本有破損的武功祕籍(2000多頁!當然是偽造的)。他注意到:書的第10頁和第11頁在同一張紙上,但第11頁和第12頁不在同一張紙上。     小明只想練習該書的第81頁到第92頁的武功,又不想帶著整本書。請問他至少要撕下多

2014藍橋杯JavaB組省賽試題解析

包括 分數 年齡 dex 傳統 check 小學 位數 最大 題目及解析如下: 題目大致介紹: 第一題到第三題以及第六題是結果填空,方法不限只要得到最後結果就行 第四題和第五題是代碼填空題,主要考察算法基本功和編程基本功 第七題到第十題是編程題,要求編程解決問題

算法筆記_206:藍橋杯軟件類決賽真(Java語言A組)

理論 cnblogs 條件 font 9.png 生成 true 突變 幻方 目錄 1 海盜分金幣 2 六角幻方 3 格子放雞蛋 4 排列序數 5 冪一矩陣 6 供水設施 1 海盜分金幣 有5個海盜,相約進行一次帆船比賽。 比賽中天氣發生突變,他們被沖

藍橋杯軟體類省賽真-C-A-1_猜年齡

/*【題目】 標題:猜年齡 小明帶兩個妹妹參加元宵燈會。別人問她們多大了,她們調皮地說:“我們倆的年齡之積是年齡之和的6倍”。 小明又補充說:“她們可不是雙胞胎,年齡差肯定也不超過8歲啊。

山東省藍橋杯 ///標題啤酒飲料//c/c++組

標題:啤酒和飲料     啤酒每罐2.3元,飲料每罐1.9元。小明買了若干啤酒和飲料,一共花了82.3元。     我們還知道他買的啤酒比飲料的數量少,請你計算他買了幾罐啤酒。     注意:答案是一個整數。請通過瀏覽器提交答案。    不要書寫任何多餘的內容(例如:寫了

藍橋杯軟體類省賽真 Java本科A 李白打酒

標題:李白打酒     話說大詩人李白,一生好飲。幸好他從不開車。     一天,他提著酒壺,從家裡出來,酒壺中有酒2鬥。他邊走邊唱:     無事街上走,提壺去打酒。     逢店加一倍,遇花喝一斗。     這一路上,他一共遇到店5次,遇到花10次,已知最後一次遇到的

藍橋杯軟體類省賽真 Java本科A 六角填數

標題:六角填數     如圖【1.png】所示六角形中,填入1~12的數字。     使得每條直線上的數字之和都相同。     圖中,已經替你填好了3個數字,請你計算星號位置所代表的數字是多少?請通過瀏覽器提交答案,不要填寫多餘的內容。 程式碼如下 : 首先 每一條線的

2017藍橋杯 C/C++B組 真分析與題解未完待續

一、前言 二、題目型別與分值分佈 1. 結果填空 (1)購物單 5’ (2)等差素數列 7’ (3)承壓計算 13’ (4)方格分割 17’ 2. 程式碼填空 (5)取數位 9’ (6

藍橋杯軟體類省賽真 Java本科A 寫日誌

標題:寫日誌     寫日誌是程式的常見任務。現在要求在 t1.log, t2.log, t3.log 三個檔案間輪流寫入日誌。也就是說第一次寫入t1.log,第二次寫入t2.log,... 第四次仍然寫入t1.log,如此反覆。     下面的程式碼模擬了這種輪流寫入不