挑選方案問題(牛客競賽 思維題+推導公式)
連結:https://ac.nowcoder.com/acm/contest/10322/C
來源:牛客網
時間限制:C/C++ 1秒,其他語言2秒
空間限制:C/C++ 262144K,其他語言524288K
64bit IO Format: %lld
題目描述
自助餐廳裡有5個盤子,裡面裝的都是麵包。
第1個盤子裡有無限個麵包;
第2個盤子裡只有1個麵包;
第3個盤子裡只有4個麵包;
第4個盤子裡也有無限個麵包,但必須兩個兩個地拿;
第5個盤子裡也有無限個麵包,但必須5個5個地拿;
給定正整數n,求有多少種正好拿出n個麵包的方案。
方案a和方案b不同,當且僅當方案a存在從某個盤子裡拿出麵包的數量與方案b中對應盤子拿出的數量不同。
示例1
輸入
複製
1
返回值
複製
3
說明
有3種方案:
在第一個盤子拿一個。
在第二個盤子拿一個。
在第三個盤子拿一個。
示例2
輸入
複製
2
返回值
複製
6
說明
有6種方案:
在第一個盤子拿2個。
在第一個盤子拿1個,第二個盤子拿1個。
在第一個盤子拿1個,第三個盤子拿1個。
在第二個盤子拿1個,第三個盤子拿1個。
在第三個盤子拿2個。
在第四個盤子拿2個。
(請注意由於第四個盤子裡只能兩個兩個拿,所以必須拿偶數個)
備註:
n<=10^9
資料僅包含一個正整數n
輸出一個正整數表示答案。
思路:
n | 方案數 | n與n-1方案數的差值 |
---|---|---|
1 | 3 | / |
2 | 6 | 3 |
3 | 10 | 4 |
4 | 15 | 5 |
5 | 21 | 6 |
根據表中我們很容易知道,他們的差值是不斷加1的,但是通過迴圈每次加1這種方法是不可行的,因為資料太大,執行必定超時,故我們可以推出他的公式。
推導公式是:
方案數=(n+4)*(n-1)/ 2+3
知道公式程式碼就非常簡單了,但題目給的n是int型,需要強制轉換為long long 否則會錯誤,下面的程式碼我是直接定義的long long n
程式碼:
#include<stdio.h>
int main()
{
long long n;
scanf("%lld",&n); //這裡需要將n強制轉換,但這裡沒有寫出
long long s=(n+4)*(n-1)/2+3;
printf("%lld\n",s);
return 0;
}
相關文章
- 牛客挑戰賽58
- 牛客小白月賽105 題解
- 牛客周賽 Round 66 題解
- 牛客挑戰賽72 總結
- 牛客周賽 Round 70 A~G 題解
- 牛客周賽 Round 62 全部題解
- 牛客練習賽26 C 城市規劃【思維+貪心】
- 牛客小白月賽88-DE題解
- 牛客小白月賽88 出題覆盤
- 牛客練習賽73 D題:離別
- 牛客挑戰賽23-A.字串(尺取)字串
- 牛客周賽Round 67 個人題解(A~F)
- 牛客小白月賽100 ACM中的CM題ACM
- 牛客小白月賽27部分題解
- 牛客練習賽26 A 平面【遞推】
- 牛客競賽,GDDU第十屆文遠知行杯新生程式設計競賽,摸魚記(BDEIKL題解,補G,ACFHJ)程式設計
- 牛客網專項練習(八)——選擇題(錯題&不懂的題)
- 牛客錯題集
- 牛客多校H題題解
- 1014: 牛生牛問題
- 免費思維導圖推薦~
- 挑戰程式設計競賽選讀-選擇排序程式設計排序
- 牛客巔峰賽S2第6場題解
- 牛客錯題集(Java)Java
- 2020牛客暑期多校訓練營(第三場)D Points Construction Problem 構造思維題Struct
- 【重磅上線】思維導圖工具XMind:ZEN基礎問題詳解合集
- C語言演算法競賽入門(二)—陣列元素移動、排序問題、猴子選大王問題C語言演算法陣列排序
- 牛客網刷題(純java題型 31~60題)Java
- 牛客網刷題(純java題型 1~30題)Java
- 牛客網刷題(純java題型 91~120題)Java
- 牛客網刷題(純java題型 241~270題)Java
- 牛客網刷題(純java題型 421~450題)Java
- 牛客網Java評估題Java
- 錯題集1-牛客
- 牛客題霸--求路徑
- 牛客周賽48
- 牛客練習賽
- 思維導圖和AI問答AI