Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <cmath>
- using namespace std;
- int main()
- {
- int r;
- ifstream f("points.in");
- f>>r;
- f.close();
- int x=0,y,ymin;
- long long int sol=0;
- while(x<=r) /// Pentru un x fixat vom calcula y minim si y maxim din zona
- {
- y=r-x+1; /// (x,y) va fi primul punct de deasupra liniei
- if(x*x+y*y<=r*r) /// Daca (x,y) este si in interiorul cercului
- {
- ymin=y; /// Este cel mai de jos punct din zona (y este minim)
- y=(int)sqrt(r*r-x*x); /// Cautam punctul pentru y maxim
- if(x*x+y*y>r)
- --y;
- /// cout<<'('<<x<<' '<<y<<") ("<<x<<' '<<ymin<<")\n";
- 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
- sol+=y-ymin+1;
- else
- {
- 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
- ++sol;
- 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
- ++sol;
- }
- }
- ++x;
- }
- ofstream g("points.out");
- g<<4*sol; /// Pentru ca avem 4 cadrane
- g.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement