【♂Not The Triumph♂O(∩_∩)O哈哈~But The Struggle♂】

竞赛决不是捷径,它只是另一种艰辛的生活方式。得到与失去,只有时间会去评判;成功与失败,只有历史能去仲裁。我不会永远成功,正如我不会永远失败一样

  C++博客 :: 首页 :: 联系 ::  :: 管理
  6 Posts :: 239 Stories :: 25 Comments :: 0 Trackbacks

常用链接

留言簿(7)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 104856
  • 排名 - 233

最新评论

阅读排行榜

评论排行榜

今天是情人节,小杉已经想好了要给喜欢的人送一份特殊的情人节礼物。
礼物是n个颜色各异的箱子,每个箱子里装一个蛋糕,蛋糕是可以上色的。
一个可爱的上色方案应该满足如下条件:
1. 任意一个蛋糕上的颜色应与一个箱子相同(可以是装它的那个箱子的颜色)。
2. 任意开启一个箱子,按里面蛋糕的颜色打开对应的箱子,这两个箱子(也可以是同一个)里的蛋糕颜色相同。
小杉现在想知道总共有多少种可爱的上色方案

input:
一行一个整数n(1<=n<=25)

output:
仅有一行,一个整数,为上色方案数对19900801取模的结果

input:
2

output:
3

分析(转dfs35123):
        一些箱子里的蛋糕和箱子的颜色是相同的。其他箱子里的蛋糕颜色必须和这些箱子中某一个箱子的的颜色相同。设有k个箱子里的蛋糕和箱子的颜色相同,则一共有C(n,k)种情况。其他箱子里的蛋糕的颜色选择,根据乘法原理有k^(n-k)种,乘起来就是C(n,k)*k^(n-k)

【参考程序】:

#include<string.h>
#include
<stdlib.h>
#include
<stdio.h>
long f[26],n;
int main()
{
    scanf(
"%d",&n);
    memset(f,
0,sizeof(f));
    f[
0]=1;f[1]=1;
    
for (int i=2;i<=n;i++)
      
for (int j=i;j>=1;j--)
        f[j]
=(f[j]+f[j-1])%19900801;//根据杨辉三角计算组合数
    long t,i,j,ans=0;
    
for (i=1;i<=n;i++)
    {
        t
=f[i];
        
for (j=1;j<=n-i;j++) t=(t*i)%19900801;
        ans
=(ans+t)%19900801;
    }
    printf(
"%d\n",ans);
    system(
"pause");
    
return 0;
}
posted on 2009-03-29 09:03 开拓者 阅读(184) 评论(0)  编辑 收藏 引用 所属分类: 数论&几何Vijos OJ

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理