24小时热门版块排行榜    

CyRhmU.jpeg
南方科技大学公共卫生及应急管理学院2025级博士研究生招生报考通知
查看: 846  |  回复: 4

holmescn

金虫 (正式写手)

[交流] Euler 工程 第四十二题: 三角词已有2人参与

希望在放假回家前,能完成前50个题

所谓三角数, 其通项为:t(n) = n(n+1)/2, 前10个三角数:
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, .....

如果把一个单词各个字母的值(A~1, Z~26)相加作为这个单词的值, 比如SKY --> 19 + 11 + 26 = 55 = t(10)
如果一个单词的值是一个三角数,那么这个单词就叫一个三角词. 下面这个连接的文件中有将近2000个常用英语单词,
它们中有多少个三角词呢?

wordliist.txt
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)

★ ★ ★
jjdg(金币+3): 辛苦了 2011-07-14 20:11:03
python:
CODE:
# Project Euler Problem 42
#
# Read Words
#

from math import sqrt

f = open("words.txt", "r")
words = [eval(s) for s in f.readline().split(",")]
f.close()
wordsVals = [sum([ord(c)-ord('A')+1 for c in s]) for s in words]

c = 0
for x in wordsVals:
    n = 1 + 8*x
    if int(sqrt(n))**2 == n:
        c += 1
print c

Result: 162
Elapsed Time: 0.058s
2楼2011-07-14 17:53:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)


jjdg(金币+1): 感谢参与 2011-07-14 20:10:51
这样一个题,用python写需要30分钟啊. 看来我水平真不行啊.
3楼2011-07-14 17:54:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
jjdg(金币+2): 感谢参与 2011-07-14 20:10:39
matlab的
CODE:
% Elapsed time is 0.214204 seconds.
% ans =
%    162
function result = euler42()
tic;
fid = fopen('D:\back\test\euler\words.txt');
words = fgets(fid);
fclose(fid);
words = strrep(words,'"','');
wordlist = regexp(words,',','split');
result = 0;
% words with 20 letters is not common, if all 'z',
% 20*26=520,40*41/2 must be over 520,so make trilist first
triList = (1:40).*(2:41)/2;
for i=1:length(wordlist)
    if ismember(sum((lower(wordlist{i})-repmat('a',1,length(wordlist{i})))+1),triList)
        result = result+1;
    end
end
toc;
end

matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
4楼2011-07-14 19:20:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tieer

木虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖
呵呵,这种题还真让数学分析束手无策啊
思考,让这个世界更有趣。
5楼2011-07-15 09:04:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 holmescn 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见