summaryrefslogtreecommitdiff
path: root/euler17.c
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2018-05-24 21:39:58 +0800
committerIru Cai <mytbk920423@gmail.com>2018-05-24 21:39:58 +0800
commit1eefd58ca4fdb5d2f51f657bfd70c9a89a4707db (patch)
treeabde0e4da3c7fe138f3874a94d8eb7d0e44c3224 /euler17.c
downloadproject_euler-1eefd58ca4fdb5d2f51f657bfd70c9a89a4707db.tar.xz
initial commit
Diffstat (limited to 'euler17.c')
-rw-r--r--euler17.c68
1 files changed, 68 insertions, 0 deletions
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 <stdio.h>
+#include <ctype.h>
+#include <string.h>
+
+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;
+}