信息學奧賽一本通 1973 【16NOIP普及組】買鉛筆 | 洛谷 P1909 [NOIP 2016 普及組] 買鉛筆

【題目鏈接】

ybt 1973 【16NOIP普及組】買鉛筆
洛谷 P1909 [NOIP 2016 普及組] 買鉛筆

【題目考點】

1. 簡單數學
2. 數組
3. 向上取整

<cmath>中有函數double ceil(double x),求x向上取整的值。
如果求正整數 ? a b ? \lceil \frac{a}{b} \rceil ?ba??也可以使用公式 ? a b ? = ? a ? 1 b ? + 1 \lceil \frac{a}{b} \rceil = \lfloor \frac{a-1}{b} \rfloor +1 ?ba??=?ba?1??+1,原理見求正整數a和正整數b的商向上取整

【解題思路】

已知需要總筆數為 n n n,只買一種包裝,設一種包裝的單價為 x x x,筆的數量為 y y y,購買這種筆 m m m包,買到筆的數量為 y ? m y\cdot m y?m
買到筆的數量必須大于等于需要的筆的數量,因此有不等式: y ? m ≥ n y\cdot m \ge n y?mn,即 m ≥ n y m \ge \frac{n}{y} myn?
由于m是整數,所以m的最小值為 ? n y ? \lceil \frac{n}{y} \rceil ?yn??
購買這種包裝的筆的最少花銷為 x ? m = x ? n y ? x\cdot m = x\lceil \frac{n}{y} \rceil x?m=x?yn??
? n y ? \lceil \frac{n}{y} \rceil ?yn??在代碼中,可以使用<cmath>中的ceil函數求,寫為ceil((double)n/y),注意n和y都是int類型變量,要想進行實數除法,需要將其中一個數字轉為浮點型量。
或者可以設函數實現公式 ? a b ? = ? a ? 1 b ? + 1 \lceil \frac{a}{b} \rceil = \lfloor \frac{a-1}{b} \rfloor +1 ?ba??=?ba?1??+1,來求 ? n y ? \lceil \frac{n}{y} \rceil ?yn??
比較購買三種包裝的筆需要的最小花銷,三者中的最小值就是最終結果。

【題解代碼】

寫法1:實現divCeil函數( ? a b ? = ? a ? 1 b ? + 1 \lceil \frac{a}{b} \rceil = \lfloor \frac{a-1}{b} \rfloor +1 ?ba??=?ba?1??+1)

#include<bits/stdc++.h>
using namespace std;
int divCeil(int a, int b)//求a/b向上取整(a、b都是正整數)
{return (a-1)/b+1; 
} 
int main()
{int n, x[3], y[3], ans = 1e9;//ans:最終的最少花費cin >> n;for(int i = 0; i < 3; ++i)cin >> y[i] >> x[i];//x[i]:第i包裝的單價 y[i]:第i包裝中筆的數量for(int i = 0; i < 3; ++i)if(ans > divCeil(n, y[i])*x[i])ans = divCeil(n, y[i])*x[i];cout << ans << endl;return 0;
}
寫法2:使用ceil函數
#include<bits/stdc++.h>
using namespace std;
int main()
{int n, x[3], y[3], ans = 1e9;//ans:最終的最少花費cin >> n;for(int i = 0; i < 3; ++i)cin >> y[i] >> x[i];//x[i]:第i包裝的單價 y[i]:第i包裝中筆的數量for(int i = 0; i < 3; ++i)ans = min(ans, (int)ceil(double(n)/y[i])*x[i]);//注意:min函數中兩個參數類型必須一致 cout << ans << endl;return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/70402.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/70402.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/70402.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++中的.*運算符

看運算符重載的時候&#xff0c;看到這一句 .* :: sizeof ?: . 注意以上5個運算符不能重載。 :: sizeof ?: . 這四個好理解&#xff0c;畢竟都學過&#xff0c;但.*是什么&#xff1f; 于是自己整理了一下 .* 是一種 C 中的運算符&#xff0c;稱為指針到成…

【JavaEE進階】MyBatis通過注解實現增刪改查

目錄 &#x1f343;前言 &#x1f340;打印日志 &#x1f334;傳遞參數 &#x1f38b;增(Insert) &#x1f6a9;返回主鍵 &#x1f384;刪(Delete) &#x1f332;改(Update) &#x1f333;查(Select) &#x1f6a9;起別名 &#x1f6a9;結果映射 &#x1f6a9;開啟駝…

【分布式理論14】分布式數據庫存儲:分表分庫、主從復制與數據擴容策略

文章目錄 一、分表分庫1. 數據分表的必要性與方式2. 數據分庫原則與優勢 二、主從復制1. 讀寫分離架構設計2. 數據復制方式3. MySQL實現主從復制4. MySQL主從復制實踐與高可用方案 三、數據擴容 隨著業務的不斷發展和數據量的增長&#xff0c;傳統的單機關系型數據庫已經逐漸不…

vxe-grid 通過配置式給單元格字段格式化樹結構數據,轉換樹結構節點

vxe-grid 通過配置式給單元格字段格式化樹結構數據&#xff0c;轉換樹結構節點 比如用戶自定義配置好的數據源&#xff0c;通過在列中配置好數據&#xff0c;全 json 方式直接返回給前端渲染&#xff0c;不需要寫任何格式化方法。 官網&#xff1a;https://vxetable.cn npm i…

延遲任務的11種實現方式(下)!!

接上文&#xff1a; Redisson的RDelayedQueue Redisson他是Redis的兒子&#xff08;Redis son&#xff09;&#xff0c;基于Redis實現了非常多的功能&#xff0c;其中最常使用的就是Redis分布式鎖的實現&#xff0c;但是除了實現Redis分布式鎖之外&#xff0c;它還實現了延遲…

BS5852英國家具防火安全條款主要包括哪幾個方面呢?

什么是BS5852檢測&#xff1f; BS5852是英國針對家用家具的強制性安全要求&#xff0c;主要測試家具在受到燃燒香煙和火柴等火源時的可燃性。這個標準通常分為四個部分進行測試&#xff0c;但實際應用中主要測試第一部分和第二部分&#xff0c;包括煙頭測試和利用乙炔火焰模擬…

如何使用Spark SQL進行復雜的數據查詢和分析

使用Spark SQL進行復雜的數據查詢和分析是一個涉及多個步驟和技術的過程。以下是如何使用Spark SQL進行復雜數據查詢和分析的詳細指南&#xff1a; 一、準備階段 環境搭建&#xff1a; 確保已經安裝并配置好了Apache Spark環境。準備好數據源&#xff0c;可以是CSV文件、JSON…

iOS事件傳遞和響應

背景 對于身處中小公司且業務不怎么復雜的程序員來說&#xff0c;很多技術不常用&#xff0c;你可能看過很多遍也都大致了解&#xff0c;但是實際讓你講&#xff0c;不一定講的清楚。你可能說&#xff0c;我以獨當一面&#xff0c;應對自如了&#xff0c;但是技術的知識甚多&a…

FFmpeg 源碼編譯安裝

參考&#xff1a; https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu Linux (Ubuntu) 下載 FFmpeg 源碼&#xff0c;并將其解壓&#xff0c;這里我將它放在 ~/ffmpeg_source 目錄下&#xff1b; cd ~/ffmpeg_sources wget -O ffmpeg-snapshot.tar.bz2 https://ffmpeg.org…

【pytest】編寫自動化測試用例命名規范README

API_autoTest 項目介紹 1. pytest命名規范 測試文件&#xff1a; 文件名需要以 test_ 開頭或者以 _test.py 結尾。例如&#xff0c;test_login.py、user_management_test.py 這樣的命名方式&#xff0c;pytest 能夠自動識別并將其作為測試文件來執行其中的測試用例。 測試類…

Windows桌面系統管理5:Windows 10操作系統注冊表

Windows桌面系統管理0&#xff1a;總目錄-CSDN博客 Windows桌面系統管理1&#xff1a;計算機硬件組成及組裝-CSDN博客 Windows桌面系統管理2&#xff1a;VMware Workstation使用和管理-CSDN博客 Windows桌面系統管理3&#xff1a;Windows 10操作系統部署與使用-CSDN博客 Wi…

llama.cpp將sensor格式的大模型轉化為gguf格式

前言 ollama本地只能導入gguf格式的大模型文件&#xff0c;將safetensors 文件轉化為gguf格式。需要使用 llama.cpp 這個開源工具。以下是使用 llama.cpp 轉換 .safetensors 格式模型到 .gguf 格式的詳細步驟: 1. 首先克隆并編譯 llama.cpp: 克隆項目 git clone https://gi…

【運維】源碼編譯安裝cmake

背景&#xff1a; 已經在本地源碼編譯安裝gcc/g&#xff0c;現在源碼安裝cmake 下載源碼 下載地址&#xff1a;CMake - Upgrade Your Software Build System 安裝步驟&#xff1a; ./bootstrap --prefix/usr/local/cmake make make install 錯誤處理 1、提示找不到libmpc.…

如何通過AI優化敏捷開發中的任務管理與分配?

用ChatGPT做軟件測試 在現代軟件開發中&#xff0c;敏捷開發&#xff08;Agile&#xff09;已成為一種廣泛采用的開發方法論&#xff0c;其核心思想是強調快速響應變化、與客戶的持續溝通以及團隊協作的高效性。然而&#xff0c;隨著項目規模的不斷擴大&#xff0c;敏捷開發面臨…

petalinux高版本設置自動登錄和開機自啟動配置

petalinux-config -c rootfs 依次選擇 Image Features -> serial-autologin-root 這是配置 進來就是root權限 創建并安裝名為 myapp-init 的新建應用程序 petalinux-create -t apps --template install -n myapp-init --enable 編輯 project-spec/meta-user/recipes-…

STM32 USB 設備的描述信息作用

在使用 STM32 USB 功能時 usbd_desc.c 文件中定義了一段宏&#xff0c;以下解每段宏的用途。 #define USBD_VID 1155 #define USBD_LANGID_STRING 1033 #define USBD_MANUFACTURER_STRING "STMicroelectronics" #define US…

React通用登錄/注銷功能實現方案(基于shadcn/ui)

React通用登錄/注銷功能實現方案&#xff08;基于shadcn/ui&#xff09; 一、功能需求分析二、通用功能封裝1. 通用登錄表單組件2. 認證Hook封裝 三、功能使用示例1. 登錄頁面實現2. 用戶菜單實現 四、路由保護實現五、方案優勢 一、功能需求分析 需要實現以下核心功能&#x…

jEasyUI 創建學校課程表

jEasyUI 創建學校課程表 引言 隨著信息技術的飛速發展,教育行業也迎來了數字化轉型的浪潮。學校課程表的創建和管理作為教育信息化的重要組成部分,其效率和準確性直接影響到學校的教學秩序。jEasyUI,作為一款優秀的開源UI框架,憑借其易用性、靈活性和豐富的組件,成為了許…

Linux 內核中的 container_of 宏:以 ipoib_rx_poll_rss 函數為例

在 Linux 內核編程中,container_of 是一個非常實用的宏,主要用于通過結構體的成員指針來獲取包含該成員的整個結構體的指針。rx_ring = container_of(napi, struct ipoib_recv_ring, napi); 在代碼中就是利用了這個宏,下面我們詳細分析它的作用和工作原理。 背景知識 在內…

【論文學習】RVS-FDSC:一種基于四方向條帶卷積的視網膜血管分割方法以增強特征提取

寫在前面&#xff1a;本博客僅作記錄學習之用&#xff0c;部分圖片來自網絡&#xff0c;如需引用請注明出處&#xff0c;同時如有侵犯您的權益&#xff0c;請聯系刪除&#xff01; 文章目錄 前言論文論文內容RSC模塊MSPF2 模塊RPDA模塊 實驗效果 總結互動致謝參考往期回顧 前言…