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,如此反覆。 下面的程式碼模擬了這種輪流寫入不