C语言 计算先有牛奶的N人准备麦片碗的方式数(算法请求)

x6492ojm  于 2023-10-16  发布在  其他
关注(0)|答案(2)|浏览(101)

我得到了以下信息:
参宿七是一个谷物爱好者和一个巨大的慈善家。每天他都有N个人需要养活。作为一个麦片爱好者,他想传播他对麦片的热爱,所以他开了一个食品储藏室,为有需要的人提供麦片。食品室有N个碗,总是储存N种不同类型的谷物和N种不同类型的牛奶。每种类型的牛奶和谷物每天都只供应一个人。参宿七意识到,如果他一遍又一遍地做同样的事情,他最终会感到厌倦。所以他每天都改变准备麦片的方法。请注意,参宿七是牛奶第一理论的坚定信徒,并赞扬任何说谷物第一是正确方法的人。所以当有空碗的时候,他总是先把牛奶倒进去。给定N个人,你能计算出参宿七可以用多少种不同的方法来准备麦片碗吗?注:如果输出大于或等于109 + 7,则取109 + 7的模

输入

程序将要求输入一个值,即N

输出

打印出参宿七可以准备谷物的不同方法的数量。
示例如下:

input: 1    output: 1
input: 2    output: 24
input: 3    output: 3240

我试着用下面的方法解决它:

#include <stdio.h>
#include <math.h>

int main(){
    long long int n;
    scanf("%lld", &n);
    long long int result = 1;
    for (int i = 1; i <= n; i++)
    {
        result = 1;
        if (i == 1)
        {
            result = 1;
        }else{
        result = result * (i*i) * (pow(6, i-1) * pow(10, i-2));
        }
    }
    printf("%lld\n", result);
    return 0;
}

是的,它工作的3个输入,但这些是唯一的测试用例,所以我提交了程序,它没有被接受。就我个人而言,我认为我的错误是在寻找数字的算法,我希望有人能帮助我解决这个问题。

2skhul33

2skhul331#

参宿七可以开始与任何人,P1到PN和给予他们一个碗和牛奶(牛奶总是第一,所有的碗都是一样的)。然后他可以给同一个人给予麦片,或者给另一个人一个碗和牛奶,等等,直到所有的人都有碗,牛奶和麦片。他从来不给予麦片粥而不给碗和牛奶。
对于N=2,可能的顺序是

p1m1 p1c1 p2m2 p2c2
p1m1 p2m2 p1c1 p2c2
p1m1 p2m2 p2c2 p1c1

乘以p,m,c的8个组合,得到24。
对于任何N,这与通过NxNxN立方体的路径有关,其中路径只能在x,y和z轴上以递增的步骤进行。我假设有一个封闭形式的解决方案。

g52tjvyc

g52tjvyc2#

有N!人们排队的方式也是如此,牛奶的种类和谷物的种类也是如此。这就是N!^3个组合。(在N = 2的情况下,这将是8,在N = 3的情况下,这将是216)。
斯塔克(第一个回答的人)已经列出了N = 2的3种可能的顺序。
N = 3的可能顺序是:

p1m p1c p2m p2c p3m p3c
p1m p1c p2m p3m p2c p3c
p1m p1c p2m p3m p3c p2c
p1m p2m p2c p3m p3c p1c
p1m p2m p2c p3m p1c p3c
p1m p2m p2c p1c p3m p3c
p1m p2m p1c p2c p3m p3c
p1m p2m p1c p3m p2c p3c
p1m p2m p1c p3m p3c p2c
p1m p2m p3m p1c p2c p3c
p1m p2m p3m p1c p3c p2c
p1m p2m p3m p2c p1c p3c
p1m p2m p3m p2c p3c p1c
p1m p2m p3m p3c p1c p2c
p1m p2m p3m p3c p2c p1c

请注意,人的顺序是通过将N中的人排成一行来覆盖的!方式,因此严格的顺序为p1,p2和p3。既然牛奶和麦片的种类已经选好了,我也就懒得给它们编号了。
现在15 * 216 = 3240。
剩下的唯一问题是为可能的顺序找到一个漂亮的封闭表达式。
添加:对于N = 1,只有一种可能的顺序添加牛奶和谷物。请注意,有2个操作要执行。
如果另一碗作为第一碗添加,则可以在制备第二碗之前、期间或之后添加谷物。这给出了N = 2的3种可能的顺序。
添加更多的碗继续这种模式。因此,总的可能订单是3 * 5 *. * (2N - 1)

相关问题