From bcc38555ea8da30afd8d0e8314e2ef8d02004a1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Luka=20=C5=A0ijanec?= Date: Tue, 14 Dec 2021 21:44:53 +0100 Subject: ne glej vsebine tega commita prosim --- inf/liga/2.c | 118 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 inf/liga/2.c (limited to 'inf/liga/2.c') diff --git a/inf/liga/2.c b/inf/liga/2.c new file mode 100644 index 0000000..25ccbe5 --- /dev/null +++ b/inf/liga/2.c @@ -0,0 +1,118 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#define M 512 +#define pedantic_fgets(a, b, c) if (!fgets(a, b, c)) { fprintf(stderr, "napaka pri vnosu\n"); return 1; } +struct p { + long long int a; + long long int b; +}; +int main (void) { + char buf[M]; + char * cp; + long long int m, n, s, a, b, c; + m = n = s = a = b = c = 0; /* uh */ + pedantic_fgets(buf, M, stdin); + m = strtoll(buf, &cp, 10); + if (!*++cp) return 1; + n = strtoll(cp, NULL, 10); + struct p * r = calloc(M, sizeof(struct p)); + int u = 0; + fprintf(stderr, "interval je [%lld; %lld]\n", m, n); +#if 0 + for (a = 1; a <= n; a++) + for (b = 1; b <= n; b++) + for (c = 1; c <= n; c++) { + if (c >= m && c <= n && a*a+b*b == c*c) { + for (int i = 0; i < u; i++) { + if ((r[i].a == a && r[i].b == b) + || (r[i].a == b && r[i].b == a)) { +#ifndef EVAL + fprintf(stderr, "ogabno\n"); +#endif + goto ogabno; + } + } + r[u].a = a; + r[u++].b = b; +#ifndef EVAL + fprintf(stderr, "%lld² + %lld² = %lld²\n", a, b, c); +#endif + s++; +ogabno:; + } + } + fprintf(stdout, "%lld\n", s); +#endif +#if 0 + for (int a = 1; a <= n; a++) + for (int b = a+1; b <= n; b++) { /* a < b, b < c <= pravzaprav to sploh ni res*/ + for (c = b+1; c*c < a*a+b*b; c++); /* koren je počasnejši */ + if (c >= m && c <= n && a*a + b*b == c*c) + s++; + } +#endif +#if 0 /* eulerjeva metoda ne generira vseh trojic */ + /* a = x² - y² + b = 2xy + c = x²+y² */ +#define COND (c < 100) + for (int x = 2; COND; x++) { + for (int y = 1; y < x; y++) { + c = x*x+y*y; +#ifndef EVAL + a = x*x-y*y; + b = 2*x*y; + fprintf(stderr, "%d²+%d²=%d² ", a, b, c); +#endif + if (c >= m && c <= n) { +#ifndef EVAL + fprintf(stderr, "ŠTEJEMO\n"); +#endif + s++; + } +#ifndef EVAL + else { + fprintf(stderr, "NE ŠTEJEMO\n"); + } +#endif + } + } +#endif +#if 0 + for (a = 1; a <= n; a++) + for (b = 1; b <= n; b++) { + double e = a*a+b*b; + double d = sqrt(e); +#ifndef EVAL /* CMS compila z -DEVAL */ + fprintf(stderr, "preverjam (%lld^2 + %lld^2 = %lf) = %lf^2\n", a, b, e, d); +#endif + if ((int) d >= m && (int) d <= n && d == (int) d) { + for (int i = 0; i < u; i++) { + if ((r[i].a == a && r[i].b == b) + || (r[i].a == b && r[i].b == a)) { +#ifndef EVAL + fprintf(stderr, "ogabno\n"); +#endif + goto ogabno; + } + } + r[u].a = a; + r[u++].b = b; + s++; +ogabno:; + } + } +#endif + for (a = 1; a <= n; a++) + for (b = 1; b <= n; b++) + for (c = 1; c <= n; c++) + if (a*a+b*b=c*c) { + + } + fprintf(stdout, "%lld\n", s); + return 0; +} -- cgit v1.2.3