Napisałem program, do rozwiązywania tegoż problemu.
Kod: Zaznacz cały
https://projecteuler.net/problem=17
Kod: Zaznacz cały
#include <iostream>
int cyfry[10] = {0, 3, 3, 5, 4, 4, 3, 5, 5, 4};
int do20[10] = {3, 6, 6, 8, 8, 7, 7, 9, 8, 8};
int liczby_20_30_etc[8] = {6, 6, 5, 5, 5, 7, 6, 6};
int sto = 7;
int tysiac = 8;
int AND = 3;
int zwrocIloscLiterWLiczbie(int n)
{
if (n < 1)
return -1;
if (n < 10)
return cyfry[n];
if (n < 20)
return do20[n - 10];
if (n < 100)
return liczby_20_30_etc[n / 10 - 2] + cyfry[n % 10];
if (n < 1000)
{
if (n == 100)
return sto;
else
return cyfry[n / 100] + sto + AND + zwrocIloscLiterWLiczbie(n - n / 100 * 100);
}
return cyfry[1] + tysiac;
}
int main()
{
using namespace std;
int sumaLiter = 0;
for (int i = 1; i <= 1000; i++)
sumaLiter += zwrocIloscLiterWLiczbie(i);
cout << sumaLiter << endl;
return 0;
}
Dzięki
Michał
Ukryta treść: