| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3336 人关注过本帖
标题:怎么写
只看楼主 加入收藏
d123678
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-10-18
结帖率:0
收藏
已结贴  问题点数:20 回复次数:12 
怎么写
某天买了非常多的糖果并把它们分成N份,依次分别有1,2,3…,N个糖果。他想拿出其中的3份分给他的室友, 为了不让室友们闹意见,必须让这三份的糖果总数恰好能被三人均分。请问他一共有多少种不同的组合方案数?
2015-12-22 12:31
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
谁帮我测试一下,看看对不对。不对的话,我再改

程序代码:
#include <stdio.h>

int main( void )
{
    const unsigned n = 20;
    unsigned a = (n+0)/3; // [1,n]中模除3等于0 的数目
    unsigned b = (n+2)/3; // [1,n]中模除3等于1 的数目
    unsigned c = (n+1)/3; // [1,n]中模除3等于2 的数目

    unsigned m = 0;
    // 0+0+0
    if( a >= 3 )
        m += a*(a-1)*(a-2)/(3*2*1);
    // 1+1+1
    if( b >= 3 )
        m += b*(b-1)*(b-2)/(3*2*1);
    // 2+2+2
    if( c >= 3 )
        m += c*(c-1)*(c-2)/(3*2*1);
    // 0+1+2
    if( a>=1 && b>=1 && c>=2 )
        m += a*b*c;

    printf( "f(%u) = %u\n", n, m );
}

2015-12-22 13:27
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
以下是引用zlz66668888在2015-12-22 13:42:34的发言:

运行结果是f(20)=384。
n=20 时结果 384 是正确的吗?我没有验证
2015-12-22 13:49
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
三个for循环嵌套。三个自增量从1到N满足三个自增量之和%3==0,打印此时的三个自增量的值。

[此贴子已经被作者于2015-12-22 14:45编辑过]

2015-12-22 13:52
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:4 
这应该是一个n选3的组合吧,当选出的3个数的和能被3整除时符合题意,统计这个即得到所有的组合方案。

能编个毛线衣吗?
2015-12-22 13:57
hacker梦魇
Rank: 2
等 级:论坛游民
帖 子:40
专家分:42
注 册:2015-10-29
收藏
得分:4 
回复 5楼 ehszt
那里来的for循环,明明是if语句,难道你用for循环写了?
2015-12-22 23:11
hacker梦魇
Rank: 2
等 级:论坛游民
帖 子:40
专家分:42
注 册:2015-10-29
收藏
得分:0 
说真的  我看着题目很矛盾 真不知道你们是怎么想出来代码
2015-12-22 23:14
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:4 
回复 2楼 rjsp
没什么问题。不过换我写会把所有的if都去掉。

重剑无锋,大巧不工
2015-12-23 00:13
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:4 
以下是引用beyondyf在2015-12-23 00:13:32的发言:
没什么问题。不过换我写会把所有的if都去掉。

谢,我看了一下,真是没必要用if。
2015-12-23 14:13
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:4 
知道了a<3,m正好是0

[此贴子已经被作者于2015-12-23 18:52编辑过]

2015-12-23 18:50
快速回复:怎么写
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019182 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved