// lasery.cpp : Ten plik zawiera funkcję „main”. W nim rozpoczyna się i kończy wykonywanie programu.
//
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int d, m, n, wynik1=0, wynik2=0, lw, lm;
cin >> d;
for (int i = 0; i < d; i++)
{
cin >> m;
cin >> n;
if (m >= n)
{
lw = m;
lm = n;
}
else
{
lw = n;
lm = m;
}
wynik1 = 4 + 2 * (lw + 1 - 2) * (lm + 1 - 1); // nie uwzględnia eliminacji prostych o tych samych wsp kier
int rozm_tab_wsp_kier= m * n;
float* tab = new float[rozm_tab_wsp_kier];
float licznik = 1, mianownik = 1;
for (int i = 0; i < rozm_tab_wsp_kier; i++)
{
tab[i] = licznik / mianownik;
if (licznik < lw)
licznik++;
else
{
licznik = 1; mianownik++;
}
if (mianownik > lm)
break;
}
wynik2 = rozm_tab_wsp_kier;
sort(tab, tab + rozm_tab_wsp_kier);
wynik2 = rozm_tab_wsp_kier;
for (int i = 0; i < rozm_tab_wsp_kier; i++)
{
if (tab[i] == 1 || tab[i] == tab[i + 1])
wynik2--;
}
wynik2 = 4 + 2 * wynik2;
//system ("pause");
delete[] tab;
cout << wynik2<<endl;
}
return 0;
}
Ly8gbGFzZXJ5LmNwcCA6IFRlbiBwbGlrIHphd2llcmEgZnVua2NqxJkg4oCebWFpbuKAnS4gVyBuaW0gcm96cG9jenluYSBzacSZIGkga2/FhGN6eSB3eWtvbnl3YW5pZSBwcm9ncmFtdS4KLy8KCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGFsZ29yaXRobT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsgCgoKaW50IG1haW4oKQp7CiAgICBpbnQgZCwgbSwgbiwgd3luaWsxPTAsIHd5bmlrMj0wLCBsdywgbG07CiAgICBjaW4gPj4gZDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZDsgaSsrKQogICAgewogICAgICAgIGNpbiA+PiBtOwogICAgICAgIGNpbiA+PiBuOwogICAgICAgIGlmIChtID49IG4pCiAgICAgICAgewogICAgICAgICAgICBsdyA9IG07CiAgICAgICAgICAgIGxtID0gbjsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgbHcgPSBuOwogICAgICAgICAgICBsbSA9IG07CiAgICAgICAgfQogICAgICAgIHd5bmlrMSA9IDQgKyAyICogKGx3ICsgMSAtIDIpICogKGxtICsgMSAtIDEpOyAvLyBuaWUgdXd6Z2zEmWRuaWEgZWxpbWluYWNqaSBwcm9zdHljaCBvIHR5Y2ggc2FteWNoIHdzcCBraWVyCiAgICAgICAgaW50IHJvem1fdGFiX3dzcF9raWVyPSBtICogbjsgCiAgICAgICAgZmxvYXQqIHRhYiA9IG5ldyBmbG9hdFtyb3ptX3RhYl93c3Bfa2llcl07CiAgICAgICAgZmxvYXQgbGljem5payA9IDEsIG1pYW5vd25payA9IDE7IAogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm96bV90YWJfd3NwX2tpZXI7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIHRhYltpXSA9IGxpY3puaWsgLyBtaWFub3duaWs7IAogICAgICAgICAgICBpZiAobGljem5payA8IGx3KQogICAgICAgICAgICAgICAgbGljem5paysrOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGxpY3puaWsgPSAxOyBtaWFub3duaWsrKzsgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKG1pYW5vd25payA+IGxtKQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHd5bmlrMiA9IHJvem1fdGFiX3dzcF9raWVyOyAKICAgICAgICBzb3J0KHRhYiwgdGFiICsgcm96bV90YWJfd3NwX2tpZXIpOwogICAgICAgIHd5bmlrMiA9IHJvem1fdGFiX3dzcF9raWVyOyAKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvem1fdGFiX3dzcF9raWVyOyBpKyspCiAgICAgICAgewogICAgICAgICAgICBpZiAodGFiW2ldID09IDEgfHwgdGFiW2ldID09IHRhYltpICsgMV0pCiAgICAgICAgICAgICAgICB3eW5pazItLTsKICAgICAgICB9CiAgICAgICAgd3luaWsyID0gNCArIDIgKiB3eW5pazI7CiAgICAgICAgLy9zeXN0ZW0gKCJwYXVzZSIpOwogICAgICAgIGRlbGV0ZVtdIHRhYjsKICAgICAgICBjb3V0IDw8IHd5bmlrMjw8ZW5kbDsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==