题目链接:哆啦A梦传送门
题意:已知有a个1,b个2,c个5,问:最小不能组成的数是多少?
解:
1,a==0时,此时最小不能组成的数是1。
2,当a+2*b<4时,此时最小不能组成的数是a+2*b+1。
3,其它条件,最小不能组成的数是a+2*b+5*c+1。
我们知道当a+2*b>=4且a!=0时,单单这两个数字的组合,就能构成范围在 [1,a+2*b]中的任何一个数,因为这范围内的任何一个数可看成是2*t+y(y=0||y=1),所给条件恰好满足此方程。这也就是说前4个数一定能组成,那么大于等于5的数,我们也可以看成是5*t+y(y<=4)。故就能解释上文提到的。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c;
while(~scanf("%d%d%d",&a,&b,&c))
{
if(a==0&&b==0&&c==0) break;
if(a==0){
puts("1");
}
else if(a+2*b<4){
printf("%d\n",a+2*b+1);
}
else printf("%d\n",a+2*b+5*c+1);
}
return 0;
}