当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 31 篇帖子 ]  前往页数 1, 2, 3  下一页
作者 内容
1 楼 
 文章标题 : [三星]编程求组合
帖子发表于 : 2013-09-29 10:39 
论坛管理员

注册: 2005-03-27 0:06
帖子: 10161
系统: Ubuntu 12.04
送出感谢: 7
接收感谢: 130
1 任务内容: 从 0~9 十个数字中找出所有满足 口口口 + 口口口 = 口口口口 的组合。

2 任务的难度: 三星

3 任务的目的: 学习 Linux 下编程

4 任务所涉及的软件: 任何语言

5 任务将大致消耗的时间: 1-2天


页首
 用户资料  
 
2 楼 
 文章标题 : Re: [三星]编程求组合
帖子发表于 : 2013-09-29 11:04 

注册: 2008-06-06 9:16
帖子: 3
送出感谢: 0 次
接收感谢: 0 次
代码:
python -c "import itertools;print [l for l in itertools.permutations(range(10)) if (int(''.join(str (j) for j in l[:3]))+int(''.join(str (j) for j in l[3:6]))==int(''.join(str (j) for j in l[6:])))]"

real 0m37.055s

代码:
python -c "import itertools;[l for l in itertools.permutations(range(10)) if ((l[0]+l[3]-l[7])*100+(l[1]+l[4]-l[8])*10+l[2]+l[5]-l[9]==l[6]*1000)]"

real 0m4.435s

代码:
python -c "import itertools,pprint;pprint.pprint([l for l in itertools.permutations(range(10)) if ((l[0]+l[3]-l[7])*100+(l[1]+l[4]-l[8])*10+l[2]+l[5]-l[9]==l[6]*1000)])"

real 0m5.007s

成功的写成了3个benchmark程序


页首
 用户资料  
 
3 楼 
 文章标题 : Re: [三星]编程求组合
帖子发表于 : 2013-09-29 11:48 
论坛管理员

注册: 2005-03-27 0:06
帖子: 10161
系统: Ubuntu 12.04
送出感谢: 7
接收感谢: 130
:em02 抓到了个潜水艇,呵呵。有其它语言的实现没?


页首
 用户资料  
 
4 楼 
 文章标题 : Re: [三星]编程求组合
帖子发表于 : 2013-09-29 12:44 
头像

注册: 2010-10-07 14:23
帖子: 33999
地址: 某系某星某洲某国某省某市
系统: Archdows10
送出感谢: 29
接收感谢: 151
叶大这个是什么意思?
把一个四位数拆解成两个三位数的和?

Sent from my SK17i using Tapatalk 2


_________________
心似浮云常自在,意如流水任东西。
此事背后一定有个天大的咪咪
广告:
1、走过路过,不要错过,dropbox网盘2.25G大放送
py大法好,退C保平安
java多妖孽,VB本异端
日诵一千遍,快活似神仙


页首
 用户资料  
 
5 楼 
 文章标题 : Re: [三星]编程求组合
帖子发表于 : 2013-09-29 12:51 
论坛管理员

注册: 2005-03-27 0:06
帖子: 10161
系统: Ubuntu 12.04
送出感谢: 7
接收感谢: 130
你运行下二楼的代码就知道了。


页首
 用户资料  
 
6 楼 
 文章标题 : Re: [三星]编程求组合
帖子发表于 : 2013-09-29 13:04 
头像

注册: 2010-10-07 14:23
帖子: 33999
地址: 某系某星某洲某国某省某市
系统: Archdows10
送出感谢: 29
接收感谢: 151
oneleaf 写道:
你运行下二楼的代码就知道了。
回去试试,好久没碰码了。一行的py看着挺蛋疼的。

Sent from my SK17i using Tapatalk 2


_________________
心似浮云常自在,意如流水任东西。
此事背后一定有个天大的咪咪
广告:
1、走过路过,不要错过,dropbox网盘2.25G大放送
py大法好,退C保平安
java多妖孽,VB本异端
日诵一千遍,快活似神仙


页首
 用户资料  
 
7 楼 
 文章标题 : Re: [三星]编程求组合
帖子发表于 : 2013-09-29 18:27 

注册: 2013-09-29 1:16
帖子: 2
系统: ubuntu13.04
送出感谢: 0 次
接收感谢: 0 次
这个语言很强大啊,很简洁,就是我不懂啊,这个语言主要用在哪里啊? :em20


页首
 用户资料  
 
8 楼 
 文章标题 : Re: [三星]编程求组合
帖子发表于 : 2013-10-23 0:17 
头像

注册: 2010-10-07 14:23
帖子: 33999
地址: 某系某星某洲某国某省某市
系统: Archdows10
送出感谢: 29
接收感谢: 151
依旧没看懂题目,把输出拆解一下输出出来应该就可以了吧?
代码:
for x in range(100,999):
    for y in range(100,999):
        z=x+y
        if z>999:
            print(x,"+",y,"=",z)


_________________
心似浮云常自在,意如流水任东西。
此事背后一定有个天大的咪咪
广告:
1、走过路过,不要错过,dropbox网盘2.25G大放送
py大法好,退C保平安
java多妖孽,VB本异端
日诵一千遍,快活似神仙


页首
 用户资料  
 
9 楼 
 文章标题 : Re: [三星]编程求组合
帖子发表于 : 2013-10-23 9:28 
论坛管理员

注册: 2005-03-27 0:06
帖子: 10161
系统: Ubuntu 12.04
送出感谢: 7
接收感谢: 130
月下叹逍遥 写道:
依旧没看懂题目,把输出拆解一下输出出来应该就可以了吧?
代码:
for x in range(100,999):
    for y in range(100,999):
        z=x+y
        if z>999:
            print(x,"+",y,"=",z)


就是将0-9 十个数字填入到方框里面,使其满足等式: 口口口 + 口口口 = 口口口口


页首
 用户资料  
 
10 楼 
 文章标题 : Re: [三星]编程求组合
帖子发表于 : 2013-11-02 23:20 

注册: 2013-11-02 21:09
帖子: 47
系统: Ubuntu
送出感谢: 0 次
接收感谢: 3
C++版本
代码:
#include <stdio.h>

bool used[10];
int digit[10];

void dfs(int n)
{
   if (n == 10) {
      int a = digit[0] * 100 + digit[1] * 10 + digit[2];
      int b = digit[3] * 100 + digit[4] * 10 + digit[5];
      int c = digit[6] * 1000 + digit[7] * 100 + digit[8] * 10 + digit[9];
      if (a + b == c) {
         printf("%03d + %03d = %04d\n", a, b, c);
      }
      return;
   }

   for (int i = 0; i < 10; i++) {
      if (used[i]) {
         continue;
      }
      used[i] = true;
      digit[n] = i;
      dfs(n + 1);
      used[i] = false;
   }
}

int main()
{
   dfs(0);
   return 0;
}


页首
 用户资料  
 
11 楼 
 文章标题 : Re: [三星]编程求组合
帖子发表于 : 2013-11-03 14:30 
头像

注册: 2010-04-23 20:40
帖子: 1950
地址: 浙江·杭州
系统: Arch Linux
送出感谢: 2
接收感谢: 31
maxiaojun0 写道:
C++版本
代码:
#include <stdio.h>

bool used[10];
int digit[10];

void dfs(int n)
{
   if (n == 10) {
      int a = digit[0] * 100 + digit[1] * 10 + digit[2];
      int b = digit[3] * 100 + digit[4] * 10 + digit[5];
      int c = digit[6] * 1000 + digit[7] * 100 + digit[8] * 10 + digit[9];
      if (a + b == c) {
         printf("%03d + %03d = %04d\n", a, b, c);
      }
      return;
   }

   for (int i = 0; i < 10; i++) {
      if (used[i]) {
         continue;
      }
      used[i] = true;
      digit[n] = i;
      dfs(n + 1);
      used[i] = false;
   }
}

int main()
{
   dfs(0);
   return 0;
}

这不是C++,这是C


_________________
我是 Giumo Clanjor(哆啦比猫/兰威举)
Where there is a hacker, there is art. | Develop for Developers. (C & perl5)
博客 | Clanjor Prods.
类 C 语言到 brainfuck 编译器


页首
 用户资料  
 
12 楼 
 文章标题 : Re: [三星]编程求组合
帖子发表于 : 2013-11-03 21:01 

注册: 2013-11-02 21:09
帖子: 47
系统: Ubuntu
送出感谢: 0 次
接收感谢: 3
cjxgm 写道:
这不是C++,这是C

代码:
$ gcc test.c
test.c:3:1: 错误: 未知的类型名‘bool’
test.c: 在函数‘dfs’中:
test.c:18:4: 错误: 只允许在 C99 模式下使用‘for’循环初始化声明
test.c:18:4: 附注: 使用 -std=c99 或 -std=gnu99 来编译您的代码
test.c:22:17: 错误: ‘true’未声明(在此函数内第一次使用)
test.c:22:17: 附注: 每个未声明的标识符在其出现的函数内只报告一次
test.c:25:17: 错误: ‘false’未声明(在此函数内第一次使用)
$ gcc -std=c99 test.c
test.c:3:1: 错误: 未知的类型名‘bool’
test.c: 在函数‘dfs’中:
test.c:22:17: 错误: ‘true’未声明(在此函数内第一次使用)
test.c:22:17: 附注: 每个未声明的标识符在其出现的函数内只报告一次
test.c:25:17: 错误: ‘false’未声明(在此函数内第一次使用)
$ gcc -std=gnu99 test.c
test.c:3:1: 错误: 未知的类型名‘bool’
test.c: 在函数‘dfs’中:
test.c:22:17: 错误: ‘true’未声明(在此函数内第一次使用)
test.c:22:17: 附注: 每个未声明的标识符在其出现的函数内只报告一次
test.c:25:17: 错误: ‘false’未声明(在此函数内第一次使用)
$ g++ test.c


页首
 用户资料  
 
13 楼 
 文章标题 : Re: [三星]编程求组合
帖子发表于 : 2013-11-03 23:15 
头像

注册: 2011-02-11 14:09
帖子: 2899
地址: 在那不遥远的地方
系统: AnthonOS Next
送出感谢: 3
接收感谢: 13
c是没有bool的吧,至少我参加NOIP是没有的,直接用unsigned int

Sent from my MI 2 using Xparent Skyblue Tapatalk 2


_________________
我的博客:http://www.tombu.biz
Dropbox:https://db.tt/s65JczEn
云诺:http://dwz.cn/yuniotombu
Ubuntu One:https://one.ubuntu.com/referrals/referee/918268/
坚果云:https://jianguoyun.com/d/ref/rKHDbne_NNiOijsCj26W9Q


页首
 用户资料  
 
14 楼 
 文章标题 : Re: [三星]编程求组合
帖子发表于 : 2013-11-04 14:48 

注册: 2013-11-02 21:09
帖子: 47
系统: Ubuntu
送出感谢: 0 次
接收感谢: 3
tangmumao_wefls 写道:
c是没有bool的吧,至少我参加NOIP是没有的,直接用unsigned int

用stdbool.h就可以有~

http://pubs.opengroup.org/onlinepubs/009696699/basedefs/stdbool.h.html


页首
 用户资料  
 
15 楼 
 文章标题 : Re: [三星]编程求组合
帖子发表于 : 2013-11-04 22:49 
头像

注册: 2011-02-11 14:09
帖子: 2899
地址: 在那不遥远的地方
系统: AnthonOS Next
送出感谢: 3
接收感谢: 13
maxiaojun0 写道:
tangmumao_wefls 写道:
c是没有bool的吧,至少我参加NOIP是没有的,直接用unsigned int

用stdbool.h就可以有~

http://pubs.opengroup.org/onlinepubs/009696699/basedefs/stdbool.h.html
反正全国计算机奥林匹克联赛(NOIP)是不让用的

Sent from my MI 2 using Xparent Skyblue Tapatalk 2


_________________
我的博客:http://www.tombu.biz
Dropbox:https://db.tt/s65JczEn
云诺:http://dwz.cn/yuniotombu
Ubuntu One:https://one.ubuntu.com/referrals/referee/918268/
坚果云:https://jianguoyun.com/d/ref/rKHDbne_NNiOijsCj26W9Q


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 31 篇帖子 ]  前往页数 1, 2, 3  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译