C++ 找出从装有三种类型a、B、C的球的袋子中取出的球的最小数量,使n个球的类型相同
例如,假设一个袋子里有1个A型球、2个B型球和3个C型球。 然后,为了确保至少有2个球属于同一类型,我们必须从袋子中取出的球的最小数量为“4”(第一个和第四个球可以是B型或C型)C++ 找出从装有三种类型a、B、C的球的袋子中取出的球的最小数量,使n个球的类型相同,c++,algorithm,combinatorics,C++,Algorithm,Combinatorics,例如,假设一个袋子里有1个A型球、2个B型球和3个C型球。 然后,为了确保至少有2个球属于同一类型,我们必须从袋子中取出的球的最小数量为“4”(第一个和第四个球可以是B型或C型) 我们如何才能找到相同的球,使至少n个球的类型相同。tldr-(2*N-2*N*M-3*M+M*M)/2 如果你有 A, 2B, 3C... 你可以这样画: 1 C B A 2 C B 3 C 两人的最低人数为1级+1级 1 D C B A 2 D C B 3 D C 4 D 现
我们如何才能找到相同的球,使至少
n
个球的类型相同。tldr-(2*N-2*N*M-3*M+M*M)/2
如果你有
A, 2B, 3C...
你可以这样画:
1 C B A
2 C B
3 C
两人的最低人数为1级+1级
1 D C B A
2 D C B
3 D C
4 D
现在两个球的最小值是4+1=5,第三级是3+4+1=8
要达到具有N个字母的lvl M,循环为:
for (B=1,n=0; n<M-1; n++)
B+=N-n;
为了解决这个问题,一个简单的方法将起作用。只需将数量小于n的所有球相加(即相同类型球的最小数量)。然后将所有剩余的球相加(n-1)。您的答案将是总和+1。
考虑一个例子,假设你有10个A型球,15个B型球,20个C型球,你希望至少有16个相同颜色的球。该方法表示将计数小于n的所有球相加,即16。。因此,总和为10+15=25。现在为所有剩余类型的球添加(n-1),即仅添加类型C。因此,总和=40。因此,您至少需要绘制16个球的最小球数为sum+1=41 你的语法不正确
例如
是拉丁语gratia的缩写,意思是,例如
。你实际上是在说,例如@TimBiegeleisen,或者这可能是一个拼写错误的egg,这是你解决这个难题得到的奖品。要回答唯一的问题,请问:代码最终会发挥作用。所以我试着用蛮力强迫,每种类型减去一个球,直到n变成1,但它不起作用。我投票结束这个问题,因为它与编程无关。
-(2*N-2*N*M-3*M+M*M)/2