From 1eefd58ca4fdb5d2f51f657bfd70c9a89a4707db Mon Sep 17 00:00:00 2001 From: Iru Cai Date: Thu, 24 May 2018 21:39:58 +0800 Subject: initial commit --- euler17.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 euler17.c (limited to 'euler17.c') diff --git a/euler17.c b/euler17.c new file mode 100644 index 0000000..f6def67 --- /dev/null +++ b/euler17.c @@ -0,0 +1,68 @@ +#include +#include +#include + +const char* num_en[]={ + "", + "one", "two", "three", "four", + "five", "six", "seven", "eight", + "nine", "ten", "eleven", "twelve", + "thirteen", "fourteen", "fifteen", "sixteen", + "seventeen", "eighteen", "nineteen", "twenty", + "thirty", "forty", "fifty", "sixty", + "seventy", "eighty", "ninety"}; + +void name_num(int num,char* name) +{ + name[0]=0; + if (num>=1000){ + strcat(name,num_en[num/1000]); + strcat(name," thousand "); + num %= 1000; + if (num>0 && num<100) + strcat(name,"and "); + } + if (num>=100){ + strcat(name,num_en[num/100]); + strcat(name," hundred "); + num %= 100; + if (num>0){ + strcat(name,"and "); + } + } + if (num>20){ + strcat(name,num_en[20-2+num/10]); + num %= 10; + if (num>0) + strcat(name,"-"); + strcat(name,num_en[num%10]); + }else{ + strcat(name,num_en[num]); + } +} + +int count_letters(char* s) +{ + char *p; + int count=0; + for (p=s; *p; ++p){ + if (islower(*p)){ + ++count; + } + } + return count; +} + +int main() +{ + int n,i,len,total_len=0; + char num_en[100]; + for (i=1;i<=1000;++i){ + name_num(i,num_en); + len = count_letters(num_en); + total_len += len; + //printf("%s %d\n",num_en,len); + } + printf("%d\n",total_len); + return 0; +} -- cgit v1.2.3