| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 21849 人关注过本帖
标题:☐ + ☐ + ☐ = 30, ☐ 里填{1, 3, 5, 7, 9, 11, 13, ...
只看楼主 加入收藏
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
结帖率:100%
收藏
已结贴  问题点数:100 回复次数:8 
☐ + ☐ + ☐ = 30, ☐ 里填{1, 3, 5, 7, 9, 11, 13, 15} 可以重复填
图片附件: 游客没有浏览图片的权限,请 登录注册


当然答案是不存在的 不过我想知道用C语言实现 有没有简洁的方法 因为用C++写是很简洁的

程序代码:
// g++ -Wall -fomit-frame-pointer -funroll-loops -Ofast -msse4.2 -mavx -std=c++11 a.cpp -lm -o a

#include <iostream>
#include <vector>

using std::cout;
using std::cin;
using std::endl;
using std::vector;

int main(void)
{
    vector<int> nums = {1, 3, 5, 7, 9, 11, 13, 15};
    for (auto i : nums)
        for (auto j : nums)
            for (auto k : nums)
                if (i + j + k == 30)
                    cout << i << " + " << j << " + " << k << " = 30." << endl;
    return 0;
}

搜索更多相关主题的帖子: C语言 
2015-05-27 16:07
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9026
专家分:54030
注 册:2011-1-18
收藏
得分:50 
肯定不存在呀,三个奇数相加的结果应该还是奇数
2015-05-27 16:15
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
程序代码:
(setq nums '(1 3 5 7 9 11 13 15))

(loop for i in nums do
      (loop for j in nums do
        (loop for k in nums do
          (if (= 30 (+ i j k))
              (message "%d + %d + %d = 30" i j k)))))


Emacs Lisp
2015-05-27 16:17
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用rjsp在2015-5-27 16:15:53的发言:

肯定不存在呀,三个奇数相加的结果应该还是奇数

我想知道C语言实现的话是什么样的 怎么简洁明快
2015-05-27 16:18
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9026
专家分:54030
注 册:2011-1-18
收藏
得分:0 
以下是引用zklhp在2015-5-27 16:18:27的发言:


我想知道C语言实现的话是什么样的 怎么简洁明快

和 C++ 代码没什么差别
程序代码:
#include <stdio.h>

int main( void )
{
    const int c[8] = { 1, 3, 5, 7, 9, 11, 13, 15 };
    for( size_t i=0; i!=6; ++i )
        for( size_t j=i+1; j!=7; ++j )
            for( size_t k=j+1; k!=8; ++k )
                if( c[i]+c[j]+c[k] == 30 )
                    printf( "%d + %d + %d = 30\n", c[i], c[j], c[k] );

    return 0;
}
2015-05-27 16:22
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用rjsp在2015-5-27 16:22:18的发言:


和 C++ 代码没什么差别
#include  
 
int main( void )
{
    const int c[8] = { 1, 3, 5, 7, 9, 11, 13, 15 };
    for( size_t i=0; i!=6; ++i )
        for( size_t j=i+1; j!=7; ++j )
            for( size_t k=j+1; k!=8; ++k )
                if( c+c[j]+c[k] == 30 )
                    printf( "%d + %d + %d = 30\n", c, c[j], c[k] );
 
    return 0;
}

学习了
2015-05-27 16:29
do8do8do8
Rank: 10Rank: 10Rank: 10
来 自:沙滩
等 级:贵宾
威 望:17
帖 子:366
专家分:1845
注 册:2010-7-2
收藏
得分:50 
有解  多的是 比如 (15)11+(15)11+(1)11=(30)11
11进制换成10进制
(15)11=1*11的1次方+5*11的0次方 =26
(15)11=1*11的1次方+5*11的0次方 =26
(1)11=1*11的0次方=1
(30)11=3*11的1次方+0*11的0次方=33

学C语言从底层开始,学编程从问题开始,一日学会C!!!
2015-05-27 16:29
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
不是说可以重复吗

一片落叶掉进了回忆的流年。
2015-05-27 19:24
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
//三个数相同:10+10+10
//两个数相同:i+j+k=2(i+j)+k奇偶性和k一样都为奇数!=30
//互不相同: 借用上面的结论(三个奇数为为奇数)最大者不小于10最小者不大于10
//综上,非要用代码绝决。。。
#include <stdio.h>

int main( void )
{
    const int c[8] = { 1, 3, 5, 7, 9, 11, 13, 15 };
    for( size_t i=0; i!=6; ++i )
        for( size_t j=i+1; j!=7; ++j )
            for( size_t k=j+1; k!=8; ++k )
                if( c[i]+c[j]+c[k] == 30 )
                    printf( "%d + %d + %d = 30\n", c[i], c[j], c[k] );

    return 0;
}
为什么一点上面的分析也没有?不需要分析?

剑栈风樯各苦辛,别时冰雪到时春
2015-05-27 19:58
快速回复:&#9744; + &#9744; + &#9744; = 30, &#9744; 里填{1, 3, 5, 7, 9, 11, ...
数据加载中...
 
   



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

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