Czołem, niezalogowana osobo!

Paciak.pl to społeczność motocyklistów skupiająca się głównie na świetnej atmosferze. Nasze forum jest dostępne dla zarejestrowanych użytkowników. Nie krępuj się i dołącz do nas.

Episode One


  • MotoAutyzm admin

    @wtchr nawet nie wiedziałem, że mamy takie ładne kolorowanie kodu na forum 😂


  • Krzoki BBB MotoWarszawa

    w sumie po porażce z csharp zrobiłem to na odpierdol się w c++, wolny ale się zmieścił

    #include <iostream>
    using namespace std;
     
    long gcd(long a, long b) {
    	while (a != 0 && b != 0) {
    		if (a > b) {
    			a %= b;
    		}
    		else {
    			b %= a;
    		}
    	}
     
    	return a == 0 ? b : a;
    }
     
    int main(void) {
    	int t;
    	long a, b, c, d, e, g;
     
    	std::cin >> t;
    	while (t--) {
    	    std::cin >> a >> b >> d;
    		e = a + b;
    		g = gcd(a, e);
    		std::cout << a / g << "/" << e / g << std::endl;
    	}
     
    	return 0;
    }
    

  • MotoWarszawa

    @tosyu napisał w Episode One:

    while (t- -)

    To mi się spodobało, w Pythonie też tak można?


  • Krzoki BBB MotoWarszawa

    @wtchr oj nie pamietam, ale chyba w pajtonie nie ma ++/–


  • MotoAutyzm admin

    @wtchr nie ma w pythonie w ogóle post/pre in/dekrementacji niestety.

    Dlatego ja swój kod zrobiłem tak by nie mieć w ogóle pętli while po liczbie testów 😛


  • MotoWungiel

    #include <cstdio>
    #include <bits/ios_base.h>
    #include <iostream>
    
    long dzielnik(long u, long v)
    {
        int shift;
        if (u == 0) return v;
        if (v == 0) return u;
        shift = __builtin_ctz(u | v);
        u >>= __builtin_ctz(u);
        do {
            v >>= __builtin_ctz(v);
            if (u > v) {
                long t = v;
                v = u;
                u = t;
            }
            v = v - u;
        } while (v != 0);
        return u << shift;
    }
    
    void getNumb(long &number)
    {
        register int c;
    
        number = 0;
        
        c = getchar();
        for (; (c>47 && c<58); c=getchar())
            number = number *10 + c - 48;
    }
    
    int main() {
        using namespace std;
        ios_base::sync_with_stdio(false);
        std::cin.tie(NULL);
        long testy, x, y, z;
        long podziel;
        getNumb(testy);
        while (testy--) {
            getNumb(x);
            getNumb(y);
            podziel = dzielnik(x, (x+y));
            cout << x / podziel << "/" << (x+y) / podziel << "\n";
            getNumb(z);
        }
        return 0;
    }
    

    C++ najszybciej jak się udało, pewnie idzie szybciej.


  • MotoBiesy Synowie Choppera Bracia w Fazerze MotoWungiel

    Ruściwo

    use std::io::*;
    
    fn main() {
        let stdin = stdin();
        let stdout = stdout();
        let mut writer = BufWriter::new(stdout.lock());
    
        let mut lines = stdin.lock().lines();
        let mut iter = lines.next();
    
        let mut test_count = iter.unwrap().unwrap().trim_end().parse::<i32>().unwrap();
    
        let mut a: i64;
        let mut b: i64;
        let mut t: i64;
    
        let mut d1: i64;
        let mut d2: i64;
    
        while test_count != 0 {
            iter = lines.next();
            let x = iter.unwrap().unwrap();
            let mut it = x.split_whitespace();
    
            d1 = it.next().unwrap().parse::<i64>().unwrap();
            d2 = it.next().unwrap().trim_end().parse::<i64>().unwrap();
    
            a = d1;
            b = d2;
    
            while b != 0 {
                t = b;
                b = a % b;
                a = t;
            }
            test_count = test_count - 1;
    
            writeln!(writer, "{}/{}", d1 / a, (d1 + d2) / a);
        }
    }
    

  • MotoWarszawa

    @mariom to pokaż wszystkim najlepszą wersję swojego programu 😉


  • MotoAutyzm admin

    @wtchr napisał w Episode One:

    @mariom to pokaż wszystkim najlepszą wersję swojego programu 😉

    #!/usr/bin/env python3
    from math import gcd
    
    def calc(i):
        a = fint(i[0])
        ab = a+fint(i[1])
        g = fgcd(a, ab)
        return fstr(a//g)+"/"+fstr(ab//g)
    
    def main():
        s = "\n"
        fcalc = calc
        input = open(0, "rb").read().split()
        open(1, "wb").write(s.join(map(fcalc, zip(*(iter(input[1:fint(input[0])*3+1]),)*3))).encode())
    
    fint = int
    fstr = str
    fgcd = gcd
    main()
    

    Fun fact: math.gcd to dokładnie taki sam kod jak miałem napisany w swojej funkcji gcd, ale - widać czas JIT swojego kodu jest dłuższy niż wczytanie już skompilowanego kodu z biblioteki.

    No i nie mam pętli, #ruchantywhileloop 😄



  • <?php
    function gcd($l, $m) {
        return $m ? gcd($m, $l % $m) : $l;
    }
    
    fscanf(STDIN, '%d', $t);
    
    for (; $t; $t--) {
        fscanf(STDIN, '%d %d', $l, $m);
        $lm = $l + $m;
        $nwd = gcd($l, $lm);
        $result[] = $l / $nwd . '/' . $lm / $nwd;
    }
    
    fprintf(STDOUT, '%s', implode("\n", $result));
    

    Lib gcd nie dawał rady, for szybszy od funkcji na tablicach, alokowanie pamięci na zmienne działało tylko do czasu wyjęcia outputu poza pętlę, ostatecznie dało to
    0.68.png


Zaloguj się, aby odpowiedzieć