分析:这题可以用母函数做,但可以找到简单的规律。
1、若1的个数为0,则输出1;
2、若1的个数不为0,则从1到n1+2*n2的数都能拼成;接着,只需考虑5的个数,若n1+2*n2能到4以上,则在所有5的组合中,中间4个间隔可以由n1+2*n2
填充,这时总和为S,则1到S之间的数都可以组成;
3、若n1+2*n2不能达到4,则开始达到5之前就断开了不能到5,就不用再去组合5的个数了。
#include<iostream> using namespace std; int main() { int a,b,c; while(cin>>a>>b>>c && a+b+c) { if(!a) cout<<1<<endl; else if(a+b*2<4) cout<<a+b*2+1<<endl; else cout<<a+2*b+c*5+1<<endl; } return 0; }
时间: 2024-10-20 02:55:20