Coin amt code started

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
main
sigonasr2 2 years ago
parent 0848ea5faf
commit a381655b12
  1. BIN
      current
  2. 121
      src/main.c

Binary file not shown.

@ -1,49 +1,108 @@
#include <stdio.h> #include <stdio.h>
#include "utils.h" #include "utils.h"
#include <math.h>
/* /*
Surprisingly there are only three numbers that can be written as the sum of fourth powers of their digits: In the United Kingdom the currency is made up of pound (£) and pence (p). There are eight coins in general circulation:
1634 = 14 + 64 + 34 + 44 1p, 2p, 5p, 10p, 20p, 50p, £1 (100p), and £2 (200p).
8208 = 84 + 24 + 04 + 84
9474 = 94 + 44 + 74 + 44
As 1 = 14 is not a sum it is not included. It is possible to make £2 in the following way:
The sum of these numbers is 1634 + 8208 + 9474 = 19316. 1×£1 + 1×50p + 2×20p + 1×5p + 1×2p + 3×1p
Find the sum of all the numbers that can be written as the sum of fifth powers of their digits. How many different ways can £2 be made using any number of coins?
https://projecteuler.net/problem=30 https://projecteuler.net/problem=31
*/ */
enum Currency{
pence1,
pence2,
pence5,
pence10,
pence20,
pence50,
pound1, //100 pences
pound2, //200 pences
};
int combinationCount(enum Currency cur) {
switch (cur) {
case pence1:{
return 1;
}break;
case pence2:{
return 2; //2
}break;
case pence5:{
return 5; //3
}break;
case pence10:{
return 10; //4
}break;
case pence20:{
return 20;
}break;
case pence50:{
return 50;
}break;
case pound1:{
return 100;
}break;
case pound2:{
return 200;
}break;
}
}
int getValue(enum Currency cur) {
switch (cur) {
case pence1:{
return 1;
}break;
case pence2:{
return 2;
}break;
case pence5:{
return 5;
}break;
case pence10:{
return 10;
}break;
case pence20:{
return 20;
}break;
case pence50:{
return 50;
}break;
case pound1:{
return 100;
}break;
case pound2:{
return 200;
}break;
}
}
int main(int argc,char**argv) { int main(int argc,char**argv) {
int counter=0; int currencyAmts[8] = {200};
int currentDigit=10; int combinationCount=0;
long digitSum=0; int maxCurrencyVal=200;
while (counter<10000000) { int currentMarker=0;
int tempNumb=currentDigit; int highestMarker=1;
digitSum=0;
long val=0; while (true) {
while (tempNumb>0) { printf("Coin amts: ");
int digit=tempNumb%10; for (int i=0;i<8;i++) {
tempNumb/=10; printf("%d ",currencyAmts[i]);
val=(long)pow(digit,5); }
digitSum+=val; printf("\n");
if (digitSum>currentDigit) { while (true) {
goto next; currencyAmts[currentMarker]
}
}
if (digitSum==currentDigit) {
printf("%d has a digit sum that equals its number!\n",currentDigit);
}
next:
currentDigit++;
counter++;
} }
}
return 0; return 0;
} }
Loading…
Cancel
Save