Cod sursă (job #513383)

Utilizator avatar mariabd Maria Burdila mariabd IP ascuns
Problemă Romb2 (clasele 9-10) Compilator cpp | 0,89 kb
Rundă Arhiva de probleme Status evaluat
Dată 16 dec. 2019 17:58:18 Scor 100
#include <stdio.h>

int X[4], Y[4];

int main(){
    int t;
    FILE *fin = fopen("romb2.in", "r");
    FILE *fout = fopen("romb2.out", "w");
    fscanf(fin, "%d", &t);
    for (int i=0;i<t;++i) {
        int dx, dy, steps, xcity, ycity;
        fscanf(fin, "%d%d%d%d%d", &dx, &dy, &steps, &xcity, &ycity);
        xcity *= dy;
        ycity *= dx;
        dx *= dy;
        Y[0] = -dx;
        X[1] =  dx;
        Y[2] =  dx;
        X[3] = -dx;
        long long ans = 0;
        for (int j=0;j<steps;++j) {
            int a = (xcity > ycity);
            int b = (xcity + ycity > 0);
            int q = (a << 1) ^ (a == b);
            xcity <<= 1;
            ycity <<= 1;
            xcity += X[q];
            ycity += Y[q];
            ans = (ans << 2) ^ q;
        }
        fprintf(fout, "%lld\n", ans + 1);
    }
    fclose(fin);
    fclose(fout);
    return 0;
}