Advertisement
a53

points1

a53
Jul 15th, 2019
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.27 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <cmath>
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. int r;
  9. ifstream f("points.in");
  10. f>>r;
  11. f.close();
  12. int x=0,y,ymin;
  13. long long int sol=0;
  14. while(x<=r) /// Pentru un x fixat vom calcula y minim si y maxim din zona
  15. {
  16. y=r-x+1; /// (x,y) va fi primul punct de deasupra liniei
  17. if(x*x+y*y<=r*r) /// Daca (x,y) este si in interiorul cercului
  18. {
  19. ymin=y; /// Este cel mai de jos punct din zona (y este minim)
  20. y=(int)sqrt(r*r-x*x); /// Cautam punctul pentru y maxim
  21. if(x*x+y*y>r)
  22. --y;
  23. /// cout<<'('<<x<<' '<<y<<") ("<<x<<' '<<ymin<<")\n";
  24. if(x+y>r&&x*x+y*y<=r*r&&x+ymin>r&&x*x+ymin*ymin<=r*r) /// (x,ymin) si (x,y) sunt in zona
  25. sol+=y-ymin+1;
  26. else
  27. {
  28. if((x+y<=r||x*x+y*y>r*r)&&x+ymin>r&&x*x+ymin*ymin<=r*r) /// Doar (x,ymin) se afla in zona
  29. ++sol;
  30. if((x+ymin<=r||x*x+ymin*ymin>r*r)&&x+y>r&&x*x+y*y<=r*r) /// Doar (x,y) se afla in zona
  31. ++sol;
  32. }
  33. }
  34. ++x;
  35. }
  36. ofstream g("points.out");
  37. g<<4*sol; /// Pentru ca avem 4 cadrane
  38. g.close();
  39. return 0;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement