#2371
Avem la dispoziție o masa de biliard dreptunghiulara. O bila pornește din colțul stânga jos al dreptunghiului sub un unghi de 45 grade față de latura de jos a dreptunghiului și lovește latura de sus sau latura din dreapta. Aici ricoșează (pornește spre o altă latură tot sub un unghi de 45 grade față de latura de care s-a lovit). Își continuă drumul până când ajunge într-un colț al dreptunghiului.
Scrieți un program care calculează de câte ori (nrSchimb
) mingea își schimbă direcția de mers până când se oprește într-un colț. Punctul de pornire nu se numără.
Examen UBB
Problema | Biliard | Operații I/O |
![]() |
---|---|---|---|
Limita timp | 0 secunde | Limita memorie |
Total: 0.1 MB
/
Stivă 0 MB
|
Id soluție | #56154702 | Utilizator | |
Fișier | biliard.cpp | Dimensiune | 952 B |
Data încărcării | 08 Februarie 2025, 09:09 | Scor / rezultat | 0 puncte |
biliard.cpp: In function 'int main()': biliard.cpp:6:737: warning: unused variable 'pastlim' [-Wunused-variable] { if (a==0&&b==0) { return -1; } if (a==0||b==0) { return max(a,b); } while (a!=0) { long long r=b%a; b=a; a=r; } return b; } unsigned long long cmmmc(long long a,long long b) { unsigned long long n; n=a/cmmdc(a,b); n*=b; return n; } int isprim(int x) { int a; if (x==1) return 0; a=sqrt(x); if (a*a==x) return 0; int nr=0; for (int i=1;i<=a;i++) if (x%i==0) nr+=2; if (nr==2) return 1; return 0; } int oglindit(int n) { int o; o=0; while (n>0) { o=o*10+(n%10); n/=10; } return o; } int nrcif(int n) { int nr=0; do { n/=10; nr++; }while (n>0); return nr; } /*ifstream fin("aoc2020.in"); ofstream fout("aoc2020.out");*/ int main() { long long a,b; cin>>a>>b; int ciolacu=cmmdc(a,b); a/=ciolacu; b/=ciolacu; if (a<b) swap(a,b); long long pastlim=0,cur=b; if (a%b==0) { cout<<a/b-1; return 0; } cur=a+(b-1); cout<<cur-1; return 0; } ^
Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
---|---|---|---|---|---|---|
1 | 0 secunde | Exited with error status 127 | 20 | 0 | ||
2 | 0 secunde | Exited with error status 127 | 20 | 0 | ||
3 | 0 secunde | Exited with error status 127 | 20 | 0 | ||
4 | 0 secunde | Exited with error status 127 | 20 | 0 | ||
5 | 0 secunde | Exited with error status 127 | 20 | 0 | ||
Punctaj total | 0 |
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Biliard face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.