换零钞

x 星球的钞票的面额只有:100元,5元,2元,1元,共4种。小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱。小明有点强迫症,他坚持要求200元换出的零钞中2元的张数刚好是1元的张数的10倍,剩下的当然都是5元面额的。银行的工作人员有点为难,你能帮助算出:在满足小明要求的前提下,最少要换给他多少张钞票吗?(5元,2元,1元面额的必须都有,不能是0)

注意,需要提交的是一个整数,不要填写任何多余的内容。

用数学方法解决:

要求钞票张数最少,满足5元钞票最多即可。

设 1 元钞票有 x 张,则 2 元钞票有 10x 张,5 元钞票 y 张。

有:x+2*10x+5y=200

整理得:y=40-21*x/5

要想 y 最大,x必须最小,所以 x=5;

所以 1 元钞票有 5 张,则 2 元钞票有 50 张,5 元钞票 19 张。

  • Ans: 74

激光样式

x星球的盛大节日为增加气氛,用30台机光器一字排开,向太空中打出光柱。 安装调试的时候才发现,不知什么原因,相邻的两台激光器不能同时打开! 国王很想知道,在目前这种bug存在的情况下,一共能打出多少种激光效果?

显然,如果只有3台机器,一共可以成5种样式,即: 全都关上(sorry, 此时无声胜有声,这也算一种) 开一台,共3种 开两台,只1种。30台就不好算了,国王只好请你帮忙了。要求提交一个整数,表示30台激光器能形成的样式种数。

提示:

斐波那契数列

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;

int main(){
int f[30];
f[0] = 2;
f[1] = 3;
for(int i=2;i<30;i++){
f[i] = f[i-1] + f[i-2];
}
cout << f[29] << endl;
return 0;
}
  • Ans:2178309

调手表

image-20210531141405703

提示:

广度搜索