購買方式問題

2021-10-03 23:21:51 字數 1577 閱讀 8517

題意:

咕咕東考試周開始了,考試周一共有n天。他不想考試周這麼累,於是打算每天都吃頓好的。他決定每天都吃生煎,咕咕東每天需要買ai個生煎。但是生煎店為了刺激消費,只有兩種購買方式:①在某一天一次性買兩個生煎。②今天買乙個生煎,同時為明天買乙個生煎,店家會給乙個券,第二天用券來拿。沒有其餘的購買方式,這兩種購買方式可以用無數次,但是咕咕東是個節儉的好孩子,他訓練結束就走了,不允許訓練結束時手裡有券。咕咕東非常有錢,你不需要擔心咕咕東沒錢,但是咕咕東太笨了,他想問你他能否在考試周每天都能恰好買ai個生煎。

輸入:

輸入兩行,第一行輸入乙個正整數n(1<=n<=100000),表示考試周的天數。第二行有n個數,第i個ai(0<=ai<=10000)表示第i天咕咕東要買的生煎的數量。

輸出:

如果可以滿足咕咕東奇怪的要求,輸出"yes",如果不能滿足,輸出「no」。

輸入樣例:

41 2 1 2

輸出樣例:

yes解題思路:

這道題看似略複雜,其實很多地方只要把題意搞明白可以大大簡化。比如券的考量是本題最關鍵的地方。只需要乙個bool型變數來表示是否需要券,這也意味著券要麼沒有,要麼只有一張,因為多出來的券完全可以用一次性買兩個生煎的方式進行替代。因此每天只需對有沒有券單獨考慮。有券時必須用券,若還需要用券則將券的變數置true,表示有券,方便下次計算。只要有一次不滿足條件即可立即break輸出no。注意判斷是否是最後一次(while中的n是否等於0),最後一次的話一定不能還有未使用的券。

總結:

考試時wa了幾個點的原因在於沒有理解好題意,誤認為每次都只能二選一,其實每次可以兩種購買方式相互組合,看ai<=10000其實就知道這一點,否則當ai>2的時候所有情況都無法完成購買。

參考**:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

intmain

(int argc,

const

char

* ar**)

if(x==0)

continue;if

(x>0)

}}else

if(x>

0&&x%2!=

0)juan=

true;}

if(n==0)

}if(ans)cout<<

"yes\n"

;else cout<<

"no\n"

;return0;

}

新書的各種購買方式彙總 人人都是產品經理

純資訊貼,可憐我現在自己手上都沒書。o噹噹 4月29日 21點更新,有貨了 35.9 包郵 o 5月1日 9點更新,有貨了 35.9 包郵 o互動 持續有貨,90天計算機類榜單已經衝到第 4位,33.75,2本以上包郵 o 應該有貨吧,25左右 郵費 o 其他一些不知名的就不提了哈,可以看這裡 偶然...

阿里雲10M頻寬的便宜購買方式

本文是乙個提出,經過計算驗證可行,但是不適用於所有人。僅適合頻寬需求範圍在5m 10m之間的cdn加速 使用者。阿里雲頻寬的計算方式 參考 ecs公網頻寬 1 5m和6m及以上是兩種單價。按照華東一的 為例,阿里雲5m固定頻寬 125元每月,超過部分單價為80元每月每兆。假設需求10m頻寬,那麼 計...

以太幣怎樣交易 以太幣購買方法

虛擬貨幣一直以來都是很多人關注的焦點,並且隨著人們投資理財意識的加強,對虛擬幣投資的重視程度也越來越高。只不過新手在入門之前應該要怎麼做才可以穩定盈利呢?大家在投資虛擬幣之前,應該要對市場上的貨幣有乙個清晰的認識,因為現在虛擬幣的品種是非常多的,領域王國上包括以太幣 位元幣 萊特幣等數字貨幣就有18...