Sunteți pe pagina 1din 1

Olimpiada Naional de Informatic Clasa a IX-a Iai, 30 martie 5 aprilie 2012

Intersectii - Descrierea soluiei Se observ c dimensiunile dreptunghiului sunt numere pare, dar, nu putem restrnge analiza problemei la un sfert din dimensiunea dreptunghiului iniial dect dac studiem unele cazuri particulare. Nu are importan cum alegem colul fix, deci putem studia doar cazul colului A iar la final vom multiplica rezultatul cu patru. Putem considera c vrful A, este originea unui sistem cartezian de coordonate. Pentru a calcula numrul de intersecii al unui segment PA, se observ c pentru un punct P de coordonate x i y prime intre ele, din acest dreptunghi, avem intersectate exact x+y-1 ptrate de latura 1, iar daca x i y nu sunt prime ntre ele, atunci dac d=cmmdc(x,y), numrul de intersecii al segmentului PA va fi in acest caz x+y-d. Pentru a reduce complexitatea algoritmului, putem face o optimizare a calculului valorii cmmdc pentru toate posibilitile de alegere ale coordonatelor punctului P realiznd o variant 2D a ciurului lui Eratostene. Vom folosi un vector de vizitare a coordonatelor i pentru un punct P[x][y] nevizitat, cu cmmdc(x,y)=1, marcm ca vizitate punctele din dreptunghi de coordonate d*x i d*y nevizitate ca avnd un numr de intersecii dat de valoarea d*( x+y-1). Astfel voi contoriza toate valorile distincte de intersecii, avnd astfel posibilitatea de a rspunde la fiecare test n timp 1. Deci complexitatea algoritmului devine O(h*w+n). . autor prof. Gheorghe Manolache Colegiul Naional de Informatic , Piatra Neam

S-ar putea să vă placă și