HDU1248 寒冰王座 母函式

2021-08-07 18:06:51 字數 1784 閱讀 2439

不死族的巫妖王發工資拉,死亡騎士拿到一張n元的鈔票(記住,只有一張鈔票),為了防止自己在戰鬥中頻繁的死掉,他決定給自己買一些道具,於是他來到了地精商店前.

死亡騎士:」我要買道具!」

地精商人:」我們這裡有三種道具,血瓶150塊乙個,魔法藥200塊乙個,無敵藥水350塊乙個.」

死亡騎士:」好的,給我乙個血瓶.」

說完他掏出那張n元的大鈔遞給地精商人.

地精商人:」我忘了提醒你了,我們這裡沒有找客人錢的習慣的,多的錢我們都當小費收了的,嘿嘿.」

死亡騎士:」……」

死亡騎士想,與其把錢當小費送個他還不如自己多買一點道具,反正以後都要買的,早點買了放在家裡也好,但是要盡量少讓他賺小費.

現在死亡騎士希望你能幫他計算一下,最少他要給地精商人多少小費.

input

輸入資料的第一行是乙個整數t(1<=t<=100),代表測試資料的數量.然後是t行測試資料,每個測試資料只包含乙個正整數n(1<=n<=10000),n代表死亡騎士手中鈔票的面值.

注意:地精商店只有題中描述的三種道具.

output

對於每組測試資料,請你輸出死亡騎士最少要浪費多少錢給地精商人作為小費.

sample input

2 900

250

sample output

0 50

思路:這道題有無數種解法,在這裡我說一下母函式的做法。150,200,350是三個因子,起始係數全為0,因為n<=10000,所以終止係數分別為10000/150,10000/200,10000/350。每次輸入的n就是最大的指數。求出答案陣列後,從last往前搜,到第乙個不為0的數所需的步數就是答案。

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long ll;

typedef

unsigned

long

long ull;

const

int inf = 1e9 + 5;

const

int maxn = 10005;

const

int mod = 30021;

const

double eps = 1e-8;

const

double pi = acos(-1.0);

int num;//因子個數

int n1[maxn];//n1[i]表示該乘積表示式第i個因子的起始係數

int n2[maxn];//n2[i]表示該乘積表示式第i個因子的終止係數

int v[maxn];//v[i]表示該乘積表示式第i個因子的權重

int p;//p是可能的最大指數

int a[maxn], b[maxn];//a為計算結果,b為中間結果。

int last;

void solve()

}void init()

int main()

}

HDU 1248 寒冰王座

description 不死族的巫妖王發工資拉,死亡騎士拿到一張n元的鈔票 記住,只有一張鈔票 為了防止自己在戰鬥中頻繁的死掉,他決定給自己買一些道具,於是他來到了地精商店前.死亡騎士 我要買道具 地精商人 我們這裡有三種道具,血瓶150塊乙個,魔法藥200塊乙個,無敵藥水350塊乙個.死亡騎士 好...

HDU 1248 寒冰王座

不死族的巫妖王發工資拉,死亡騎士拿到一張n元的鈔票 記住,只有一張鈔票 為了防止自己在戰鬥中頻繁的死掉,他決定給自己買一些道具,於是他來到了地精商店前.死亡騎士 我要買道具 地精商人 我們這裡有三種道具,血瓶150塊乙個,魔法藥200塊乙個,無敵藥水350塊乙個.死亡騎士 好的,給我乙個血瓶.說完他...

HDU 1248 寒冰王座 (揹包)

problem description 不死族的巫妖王發工資拉,死亡騎士拿到一張n元的鈔票 記住,只有一張鈔票 為了防止自己在戰鬥中頻繁的死掉,他決定給自己買一些道具,於是他來到了地精商店前.死亡騎士 我要買道具 地精商人 我們這裡有三種道具,血瓶150塊乙個,魔法藥200塊乙個,無敵藥水350塊乙...