프로젝트 오일러 17

프로젝트 오일러 17

1부터 5까지의 숫자를 영어로 쓰면 one, two, three, four, five 이고,
각 단어의 길이를 더하면 3 + 3 + 5 + 4 + 4 = 19 이므로 사용된 글자는 모두 19개입니다.
1부터 1,000까지 영어로 썼을 때는 모두 몇 개의 글자를 사용해야 할까요?
참고: 빈 칸이나 하이픈('-')은 셈에서 제외하며, 단어 사이의 and 는 셈에 넣습니다.
  예를 들어 342를 영어로 쓰면 three hundred and forty-two 가 되어서 23 글자,
  115 = one hundred and fifteen 의 경우에는 20 글자가 됩니다.
-----------------------------------------------------------------------------
#include
void main()
{
 int sum = 854;  // 1부터 99까지 합
 int num[9] = { 3, 3, 5, 4, 4, 3, 5, 5, 4 }; //백의 자리 글자 one 부터 nine 까지
 long long i,part; 
 long long result=0;
 for (i = 0; i < 9; i++) //one 부터 nine 까지 9번 반복
 {
  part = num[i] *100 + 997 + sum;  // 백의 자리 글자 100번과 hundred and 99번과 hundred 1번과
  result += part;                                    1~99까지 글자의 합(sum)
 }
 printf("%d\n", sum + result + 11 ); 1~99의 글자 합과 100~999의 글자 합과 one thousand 글자수
}
----------------------------------------------------------------------------
sum 을 처음에 864로 풀어서 오래 걸렸던 문제.  fourty 가 아니라 forty 였구나..
프로그래밍과 영어를 함께 배울 수 있어서 좋았다.

댓글

이 블로그의 인기 게시물

윈도우 설치에서 파티션 설정 오류(NTFS)

[exploit writing] 1_스택 기반 오버플로우 (1) First

하둡 설치 오류 정리