project euler 42 Coded triangle numbers
2018-01-17 13:51
381 查看
题目:
https://projecteuler.net/problem=42题意:
Coded triangle numbersProblem 42
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)2给出;因此前十个三角形数是:
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, …
将一个单词的每个字母分别转化为其在字母表中的顺序并相加,我们可以计算出一个单词的值。例如,单词SKY的值就是 19+11+25=55=t10。如果一个单词的值是一个三角形数,我们就称这个单词为三角形单词。
在这个16K的文本文件words.txt (右击并选择“目标另存为……”)中包含有将近两千个常用英文单词,这其中有多少个三角形单词?
思路:
预先求个三角形数字的表,然后对每个单词求出其值,再用二分查找确定其是不是三角形单词代码:
#include <bits/stdc++.h> using namespace std; const int N = 1000 + 10; int triangle_number ; void get_table(int n) { triangle_number[0] = 0; int tot = 1; for(int i = 1; i <= n; ++i) triangle_number[i] = triangle_number[i-1] + tot++; } int main() { int n = 1000; get_table(n); //printf("%d\n", triangle_number ); freopen("f://p042_words.txt", "r", stdin); char ch; int val = 0, ans = 0; while((ch = getchar()) != -1) { if(isalpha(ch)) val += toupper(ch) - 'A' + 1; else { if(val != 0 && binary_search(triangle_number + 1, triangle_number + 1 + n, val)) ++ans; val = 0; } } printf("%d\n", ans); return 0; }
相关文章推荐
- Project Euler:Problem 42 Coded triangle numbers
- Project Euler:Problem 42 Coded triangle numbers
- (Problem 42)Coded triangle numbers
- Problem 42 Coded triangle numbers(ifstream +getline)
- 欧拉工程第42题:Coded triangle numbers
- No42_Coded triangle numbers
- Python-Project Euler 42
- Project Euler 88:Product-sum numbers 积和数
- Project Euler:Problem 61 Cyclical figurate numbers
- Project Euler:Problem 61 Cyclical figurate numbers
- 21 Amicable numbers - Project Euler
- Project Euler 42
- Project Euler:Problem 88 Product-sum numbers
- project euler 44 Pentagon numbers
- 2 Even Fibonacci numbers - Project Euler
- SPOJ problem 42: Adding Reversed Numbers
- Project Euler:Problem 88 Product-sum numbers
- SPOJ42 - Adding Reversed Numbers (简单题)
- Project Euler 102:Triangle containment 包含原点的三角形
- Find The Shortest Path In Triangle Numbers