[noi online 入門組]文具訂購
小明的班上共有n元班費,同學們準備使用班費集體購買3種物品:
1.圓規,每個7元。
2.筆,每支4元。
3.筆記本,每本3元。
小明負責訂購文具,設圓規,筆,筆記本的訂購數量分別為a,b,c,他訂購的原則依次如下:
1.n元錢必須正好用光,即7a+4b+3c=n。
2.在滿足以上條件情況下,成套的數量盡可能大,即a,b,c中的最小值盡可能大。
3.在滿足以上條件情況下,物品的總數盡可能大,即a+b+c盡可能大。
請你幫助小明求出滿足條件的最優方案。可以證明若存在方案,則最優方案唯一。
【輸入格式】
從檔案order.in中讀入資料。
僅一行乙個整數n表示班費數量。
【輸出格式】
輸出到檔案order.out中。
若方案不存在則輸出-1。否則輸出一行三個用空格分隔的非負整數a,b,c表示答案。
【樣例1輸入】
1【樣例1輸出】
-1【樣例2輸入】
14【樣例2輸出】
1 1 1
【樣例3輸入】
33【樣例3輸出】
1 2 6
【樣例3解釋】
a=2,b=4,c=1也是滿足條件1,2的方案,但對於條件3,該方案只買了7個物品,不如a=1,b=2,c=6的方案。
【資料範圍與提示】
對於測試點1~6:ns14。
對於測試點712:n是14的倍數。對於測試點1318:n≤100。對於所有測試點:0sn≤105。
【時間限制】
1.0s
【空間限制】
256mb
【上傳檔案】
上傳c,cpp或pas語言源程式,檔名應依次為order.c,order.cpp,order.pas。
【示例**】
#include
#include
intmain
(int argc,
char
*ar**)
//排除掉不成立的條件
else
if(n%
14==0)
//排除正好成套的條件
else
if(n%
14==1)
else
if(n%
14==2)
else
if(n%
14==
3) c+=1
;else
if(n%
14==
4) b+=1
;else
if(n%
14==5)
else
if(n%
14==
6) c+=2
;else
if(n%
14==
7) a+=1
;else
if(n%
14==
8) b+=2
;else
if(n%
14==
9) c+=3
;else
if(n%
14==10)
else
if(n%
14==11)
else
if(n%
14==
12) c+=4
;else
printf
("%d %d %d\n"
,a,b,c)
;return0;
//fclose(stdin);
//fclose(stdout);
}
資訊學奧賽真題解析(划拳2)
1046.划拳 15 划拳是古老中國酒文化的乙個有趣的組成部分。酒桌上兩人划拳的方法為 每人口中喊出乙個數字,同時用手比劃出乙個數字。如果誰比劃出的數字正好等於兩人喊出的數字之和,誰就贏了,輸家罰一杯酒。兩人同贏或兩人同輸則繼續下一輪,直到唯一的贏家出現。下面給出甲 乙兩人的划拳記錄,請你統計他們最...
資訊學奧賽
排列與組合是常用的數學方法,其中組合就是從n個元素中抽出r個元素 不分順序且r n 我們可以簡單地將n個元素理解為自然數1,2,n,從中任取r個數。現要求你用遞迴的方法輸出所有排列。一行兩個自然數n r 1 include include includeusing namespace std int...
資訊學奧賽
時間限制 1000 ms 記憶體限制 65536 kb 提交數 3478 通過數 2486 給定乙個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。我們假設對於小寫字母有 a b y z 而且給定的字串中的字母已經按照從小到大的順序排列。只有一行,是乙個由不同的小寫字母組成的字串,已知字串的長...