The nth term of the sequence of triangle numbers is given by, tn = ½n(n+1); so the first ten triangle numbers are:

1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...

By converting each letter in a word to a number corresponding to its alphabetical position and adding these values we form a word value. For example, the word value for SKY is 19 + 11 + 25 = 55 = t10. If the word value is a triangle number then we shall call the word a triangle word.

Using words.txt (right click and 'Save Link/Target As...'), a 16K text file containing nearly two-thousand common English words, how many are triangle words?

题目大意:

三角形数序列中第 n 项的定义是: tn = ½n(n+1); 因此前十个三角形数是:

1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...

通过将一个单词中每个字母在字母表中的位置值加起来,我们可以将一个单词转换为一个数。例如,单词SKY的值为19 + 11 + 25 = 55 = t10。如果单词的值是一个三角形数,我们称这个单词为三角形单词。

words.txt (右键另存为)是一个16K的文本文件,包含将近两千个常用英语单词。在这个文件中,一共有多少个三角形词?

//(Problem 42)Coded triangle numbers
// Completed on Tue, 19 Nov 2013, 03:34
// Language: C11
//
// 版权所有(C)acutus (mail: acutus@126.com)
// 博客地址:http://www.cnblogs.com/acutus/
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <stdbool.h>
#include <math.h> bool test(int n)
{
int m;
m = (int)sqrt(n * );
if(m * (m + ) == * n) return true;
else return false;
} int count(char * s)
{
int i = ;
int sum = ;
while(s[i] != '\0') {
sum += s[i] - 'A' + ;
i++;
}
return sum;
} void solve(void)
{
FILE *fp;
int i, j, k;
char *s, c;
int sum = ;
char a[]; fp = fopen("words.txt", "r");
fseek(fp, , SEEK_END);
int file_size;
file_size = ftell(fp);
fseek(fp, , SEEK_SET);
s = (char*)malloc(file_size * sizeof(char));
fread(s, sizeof(char), file_size, fp); i = j = k = ;
while(i <= file_size) {
c = s[i++];
if(!isalpha(c)) {
if(c == ',') {
j = ;
if(test(count(a))) sum++;
memset(a,'\0', * sizeof(char));
}
} else {
a[j++] = c;
}
}
if(test(count(a))) sum++;
memset(a,'\0', * sizeof(char)); printf("%d\n",sum);
} int main(void)
{
solve();
return ;
}
Answer:
162

最新文章

  1. Python(五)模块
  2. FFmpeg学习3:播放音频
  3. 我常用的grep命令
  4. OpenExplorer打开文件夹
  5. nginx环境下配置nagios-关于nagios配置文件nginx.conf
  6. 移动端动画使用transform提升性能
  7. 服务器返回的各种HTTP状态码介绍
  8. Java Socket简例
  9. MFC DialogBar 按钮灰色不响应
  10. Sublime Text 2 中文包
  11. Linux关闭防火墙,关闭Selinux
  12. 好用的前端页面性能检测工具—sitespeed.io
  13. HDU 6112 今夕何夕
  14. Android开发学习之路--RxAndroid之初体验
  15. numpy 和tensorflow 中的乘法
  16. 机器学习之MCMC算法
  17. Django Rest Framework(认证、权限、限制访问频率)
  18. 【spring基础】spring声明式事务详解
  19. 分析api时去除全局异常
  20. 树莓派上搭建NAS

热门文章

  1. 潜在语义分析Latent semantic analysis note(LSA)原理及代码
  2. S3C2416裸机开发系列十六_sd卡驱动实现
  3. SQLSERVER常用脚本整理
  4. SQL学习之Insert的特殊用法(插入检索出的数据,表之间的数据复制)
  5. tigervnc*
  6. linq中的cast&lt;T&gt;()及OfType&lt;T&gt;()
  7. Hadoop学习之Mapreduce执行过程详解
  8. Java和JavaScript的时间互传
  9. Android 仿360桌面小人
  10. 树莓派高级GPIO库,wiringpi2 for python使用笔记(三)GPIO操作