1
0
Fork 0
projecteuler/17.c

73 lines
1.6 KiB
C

#include <stdio.h>
#include <stdlib.h>
int nums[1001];
int hundred = 7;
int and = 3;
void assign_base_nums () {
nums[0] = 0; // placeholder
nums[1] = 3; // one
nums[2] = 3; // two
nums[3] = 5; // three
nums[4] = 4; // four
nums[5] = 4; // five
nums[6] = 3; // six
nums[7] = 5; // seven
nums[8] = 5; // eight
nums[9] = 4; // nine
nums[10] = 3; // ten
nums[11] = 6; // eleven
nums[12] = 6; // twelve
nums[13] = 8; // thirteen
nums[14] = 8; // fourteen
nums[15] = 7; // fifteen
nums[16] = 7; // sixteen
nums[17] = 9; // seventeen
nums[18] = 8; // eighteen
nums[19] = 8; // nineteen
nums[20] = 6; // twenty
nums[30] = 6; // thirty
nums[40] = 5; // forty
nums[50] = 5; // fifty
nums[60] = 5; // sixty
nums[70] = 7; // seventy
nums[80] = 6; // eighty
nums[90] = 6; // ninety
nums[1000] = 11; // one thousand
}
void assign_composite_nums () {
// twenty to ninety-nine
for (int i = 2; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
nums[10*i + j] = nums[10*i] + nums[j];
}
}
// one hundred to nine hundred and ninety-nine
for (int i = 1; i <= 9; i++) {
nums[100*i] = nums[i] + hundred;
for (int j = 1; j <= 99; j++) {
nums[100*i + j] = nums[100*i] + and + nums[j];
}
}
}
void sum_all_nums() {
int sum = 0;
for (int i = 1; i <= 1000; i++) {
sum += nums[i];
}
printf("%d\n", sum);
}
int main (int argc, char* argv[]) {
assign_base_nums();
assign_composite_nums();
sum_all_nums();
}