首页 > 其他 > 详细

蓝桥杯题——李白打酒

时间:2019-02-17 19:42:55      阅读:135      评论:0      收藏:0      [点我收藏+]

话说大诗人李白,一生好饮。幸好他从不开车。
 一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:

    无事街上走,提壶去打酒。
    逢店加一倍,遇花喝一斗。

这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。 

请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。

1.把a可以看做是1,把b可以看做是0。所以最大是111110000000000,最小是000000000011111。

2,把这些15位的二进制,转换成十进制。反过来在代码中用十进制转换成二进制就可以得到所有情况。

3,按要求把符合的输出。

#include <iostream.h>
int art[15];
int sum;

void fun(long aa)//把十进制转换成二进制
{
int f = 0;

while(aa!=0)
{
art[f] = aa%2;
sum += art[f];
aa = aa/2;
f++;
}
}
void main()
{
long t ;

for(t=15768;t<30768;t++)
{
int Li = 2;//最初的两斗酒
sum = 0;
fun(t);
if(sum==5)
{
for(int i=14;i>0;i--)
{
if(art[i] == 0)
{

Li = Li-1;
}
else
{
Li = Li*2;
}
if(Li<0)
{
break;
}


}

if(Li==1)
{
for(i=14;i>=0;i--)
{
if(art[i] == 1)
cout<<‘a‘;
else
cout<<‘b‘;
}
cout<<endl;
}

}

}

}

 

结果

abbbabaabbabbbb
abbbaabbbaabbbb
abbbaabbabbbabb
abbbaaabbbbbbba
abbabbbabaabbbb
abbabbbaabbbabb
abbabbabbbababb
abbabbababbbbba
abbababbbbabbba
abbaabbbbbbbaba
ababbbbbabababb
ababbbbabbabbba
ababbbabbbbbaba
aabbbbbbbaabbba
aabbbbbbabbbaba

蓝桥杯题——李白打酒

原文:https://www.cnblogs.com/zkw123/p/10392158.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!