diff options
Diffstat (limited to 'mat/euler/16/prog.c')
-rw-r--r-- | mat/euler/16/prog.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/mat/euler/16/prog.c b/mat/euler/16/prog.c new file mode 100644 index 0000000..5a2d7f3 --- /dev/null +++ b/mat/euler/16/prog.c @@ -0,0 +1,30 @@ +#include <stdio.h> +#include <stdlib.h> +#define DISABLE_LIB_TESTS +#include <mnozi.c> +#define MAX_SIRINA 80*(24-3) /* zapolnimo malo teminalsko okno */ +#define MAX_SIRINA_S "1680" /* = 80 * 21; nastavi tudi to za format stavek */ +int main (int argc, char ** argv) { + if (argc != 1+2) { + fprintf(stderr, "uporaba: %s <Številka> (^) <Številka>\nprimer za izračun 2^1000: %s 2 1000\n", argv[0], argv[0]); + return 1; + } + unsigned long long int n = strtoull(argv[1], NULL, 10); + unsigned long long int m = strtoull(argv[2], NULL, 10); + if (m == 0) { + fprintf(stderr, "KARKOLI NA NIČ JE ENA! (reci to računalniku)\n"); + return 2; + } + char * z = malloc(sizeof(char)*(MAX_SIRINA + 1)); // + 1 za \0 + unsigned int l = MAX_SIRINA; + unsigned long long int s = 0; // Seštevek števk + sprintf(z, "%0" MAX_SIRINA_S "llu", n); + z[MAX_SIRINA] = '\0'; + for (; m > 1; m--) + // fprintf(stderr, "\rpreostane še %llu operacij ...", m); + mnozi (n, z, l); + for (m = 0; m < MAX_SIRINA; m++) // sicer je m itak že 0 ampak okej + s = s + (z[m] - '0'); + fprintf(stdout, "\rkonec računanja. seštevek števk v rezultatu je %llu, število je\n%s\n", s, z); + return 0; +} |