summaryrefslogtreecommitdiffstats
path: root/mat/euler/16/prog.c
diff options
context:
space:
mode:
Diffstat (limited to 'mat/euler/16/prog.c')
-rw-r--r--mat/euler/16/prog.c30
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;
+}