| 查看: 1522 | 回复: 13 | |||
| 本帖产生 2 个 程序强帖 ,点击这里进行查看 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
holmescn金虫 (正式写手)
|
[交流]
Euler 工程 第廿二题: 姓的总分已有5人参与
|
||
|
附件中是一个包含了5前个姓的文件。先把它按字母表排序,然后计算每个姓的值,并乘以这个姓在文件中的序数得到这个姓的分数。 例如,COLIN,它的字母值是:3+15+12+9+14=53,在排序后的列表中,它在第938位,这样COLIN的得分为:53*938=49714 那么这个文件中所有姓的总分是多少? |
» 本帖已获得的红花(最新10朵)
» 猜你喜欢
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
AI论文写作工具:是科研加速器还是学术作弊器?
已经有3人回复
孩子确诊有中度注意力缺陷
已经有6人回复
2026博士申请-功能高分子,水凝胶方向
已经有6人回复
论文投稿,期刊推荐
已经有4人回复
硕士和导师闹得不愉快
已经有13人回复
请问2026国家基金面上项目会启动申2停1吗
已经有5人回复
同一篇文章,用不同账号投稿对编辑决定是否送审有没有影响?
已经有3人回复
RSC ADV状态问题
已经有4人回复
» 本主题相关价值贴推荐,对您同样有帮助:
Project Euler 50 欧拉工程 50 题
已经有12人回复
Project Euler 48 欧拉工程 48 题
已经有30人回复
Project Euler 45 欧拉工程 45 题
已经有7人回复
Euler 工程 第廿九题:有多少不同的项?
已经有30人回复
Euler 工程 第廿六题:最长的循环节
已经有9人回复
Euler 工程 第廿四题:全排列的第100万项
已经有19人回复
Euler 工程第十六题:2的1000次方的各项和
已经有14人回复
Euler 工程 第十五题:从左上角到右下角有多少条路?
已经有5人回复
Euler 工程 第14题:找最长的数列
已经有9人回复
Euler Project Q13 欧拉工程第十三题
已经有20人回复
Euler Project Q12 欧拉工程第十二题
已经有23人回复
Euler 工程 第十一题:相邻元素乘积最大
已经有10人回复
Euler Project Q7. 欧拉工程第七题
已经有14人回复
Euler 工程 第六题:平方和与和的平方差多少?
已经有5人回复
Euler 工程 第二题:Fibonacci数列中小于4百万的偶数的和
已经有8人回复

10楼2011-06-06 22:15:10
libralibra
至尊木虫 (著名写手)
骠骑将军
- 程序强帖: 40
- 应助: 817 (博后)
- 金币: 12914.1
- 红花: 64
- 帖子: 2238
- 在线: 287.3小时
- 虫号: 696514
- 注册: 2009-02-05
- 专业: 计算机软件
★ ★ ★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
dubo(金币+1): 谢谢交流 2011-06-05 12:17:18
微尘、梦想(金币+4): 2011-06-06 20:19:45
小木虫(金币+0.5):给个红包,谢谢回帖
dubo(金币+1): 谢谢交流 2011-06-05 12:17:18
微尘、梦想(金币+4): 2011-06-06 20:19:45
|
matlab code %% What is the total of all the name scores in the file? % For example, when the list is sorted into alphabetical order, % COLIN, which is worth 3 + 15 + 12 + 9 + 14 = 53, is the 938th name in the list. % So, COLIN would obtain a score of 938 × 53 = 49714. function result = euler22() tic; fid = fopen('D:\euler\names.txt'); names = fgets(fid); % 读取全部内容到字符串 fclose(fid); names = strrep(names,'"',''); % 删除" namelist = regexp(names,',','split'); % 用逗号分隔 sname = sort(namelist); % 排序 result = 0; for i=1:length(sname) % 循环 curname = lower(sname{i}); % 全小写 curname = curname-repmat('a',1,length(curname)); % 与全a作差 cursum = sum(curname+1); % 求和 result = result+cursum*i; % 乘顺序计算score,累加 end toc; end 结果时间 % Elapsed time is 0.307340 seconds. % ans = % 871198282 |

2楼2011-06-05 01:32:32
★ ★ ★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
dubo(金币+1): 谢谢交流 2011-06-05 12:17:28
微尘、梦想(金币+4): 2011-06-06 20:19:54
小木虫(金币+0.5):给个红包,谢谢回帖
dubo(金币+1): 谢谢交流 2011-06-05 12:17:28
微尘、梦想(金币+4): 2011-06-06 20:19:54
|
涉及到文本处理的惯例是Perl: #!/usr/bin/perl open F, "<", "names.txt"; $f = @ns = sort eval ($f); foreach(@ns){ local (*v) = \$_; $v += ord($_) - ord('A') + 1 foreach(/(.)/g); } unshift @ns, 0; $s += $_ * $ns[$_] foreach(1..@ns); print $s; [ Last edited by huycwork on 2011-6-6 at 09:27 ] |

3楼2011-06-05 10:12:44
wangww2011
木虫 (著名写手)
- 程序强帖: 13
- 应助: 11 (小学生)
- 金币: 4023.1
- 散金: 2709
- 红花: 18
- 沙发: 1
- 帖子: 1915
- 在线: 1537.1小时
- 虫号: 772953
- 注册: 2009-05-17
- 性别: GG
- 专业: 凝聚态物性 II :电子结构
★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
xzhdty(金币+2): 谢谢交流 2011-06-05 14:21:41
余泽成(程序强帖+1): 鼓励交流! 2011-06-18 15:55:16
小木虫(金币+0.5):给个红包,谢谢回帖
xzhdty(金币+2): 谢谢交流 2011-06-05 14:21:41
余泽成(程序强帖+1): 鼓励交流! 2011-06-18 15:55:16
|
话说perl版的真是简洁 还是用C写吧,虽然看着挺不爽的 #include #include #include #define SIZE 50000 inline int cmp(const void *p1,const void *p2) { return strcmp((char *)p1,(char *)p2); } inline int count(const char *p){ int i=0,res=0; while(p[i]!='\0')res+=p[i++]-64; return res; } long euler22(){ int i=0,length; FILE *fp=fopen("names.txt", "r"); if(fp == 0) return -1; char str[SIZE]; if (NULL == fgets(str, SIZE, fp)) { return -1; } fclose(fp); char *delims="\","; char *p=strtok(str,delims); char names[6000][15]; while(p!=NULL){ strcpy(names[i++],p); p=strtok(NULL,delims); } length=i; qsort(names,length,sizeof(names[0]),cmp); long sum=0; for(i=0;i return sum; } int main(void){ printf("%ld\n",euler22()); return 0; } |
4楼2011-06-05 13:42:07













回复此楼
holmescn
: