#include "bits/stdc++.h"
using namespace std;
#define REP(i, n) for(ll i = 0;i < n;i++)
#define ll long long
#define MOD 1000000007LL
//#define MOD 998244353LL
#define doublecout(a) cout<<setprecision(16)<<a<<endl;
using vi = vector<ll>; // intの1次元の型に vi という別名をつける
using vvi = vector<vi>; // intの2次元の型に vvi という別名をつける
using vvvi = vector<vvi>; // intの2次元の型に vvi という別名をつける
const ll llMAX=9223372036854775807LL; 
const ll llMIN=-9223372036854775808LL;

void myprint1D(vi &data)
{
  REP(i,data.size())
    cout<<data[i]<<" ";
  cout<<endl;
}

//配列を[y][x]で表示
void myprint2D_T(vvi &data)
{
  REP(i,data.size())
    myprint1D(data[i]);
}

//配列を[x][y]で表示
void myprint2D(vvi &data)
{
  ll l1=data.size();
  ll l2=data[0].size();
  REP(j,l2){
    REP(i,l1)
      cout<<data[i][j]<<" ";
    cout<<endl;
  }
}

//print(a,b...)って使い方
void print1(ll a){cout<<a<<endl;}
void print2(ll a,ll b){cout<<a<<" "<<b<<endl;}
void print3(ll a,ll b,ll c){cout<<a<<" "<<b<<" "<<c<<endl;}
void print4(ll a,ll b,ll c,ll d){cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;}
void print5(ll a,ll b,ll c,ll d,ll e){cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<endl;}


ll xch(string ins){
  ll ret=0;
  ll nm=0;
  for(ll i=0;i<ins.size();i++){
    if (nm!=0)nm--;
    if (ins[i]=='.') nm=4;
  }
  for(ll i=0;i<nm;i++){
    ins+="0";
  }

  //文字列抽出、スウチ変換
  string s1=ins.substr(0,ins.size()-5);
  string s2=ins.substr(ins.size()-4,4);
  string s3=s1+s2;
  ret=stoll(s3);
  return ret;
}



//整数の割り算、割ったあまりが正の整数になるやつ
//bbbは正の数
constexpr ll floordiv(ll aaa,ll bbb)
{
  if (aaa<0){
    return (aaa-bbb+1)/bbb;
  }else{
    return aaa/bbb;
  }
}
//bbbは正の数
constexpr ll floormod(ll aaa,ll bbb)
{
  ll ret=aaa%bbb;
  if (ret<0)ret+=bbb;
  return ret;
}



int main(){
  ll ans=0;
  string ss0,ss1,ss2;
  cin >> ss0>>ss1>>ss2;

  int flag;
  flag=0;
  for(ll i=0;i<ss0.size();i++){
    if (ss0[i]=='.'){
      flag=1;
      break;
    }
  }
  if (flag==0){
    ss0+=".";
  }

  flag=0;
  for(ll i=0;i<ss1.size();i++){
    if (ss1[i]=='.'){
      flag=1;
      break;
    }
  }
  if (flag==0){
    ss1+=".";
  }

  flag=0;
  for(ll i=0;i<ss2.size();i++){
    if (ss2[i]=='.'){
      flag=1;
      break;
    }
  }
  if (flag==0){
    ss2+=".";
  }

  /*
  cout<<xch(ss0)<<endl;
  cout<<xch(ss1)<<endl;
  cout<<xch(ss2)<<endl;
  */
  
 

  ll x,y,r;
  x=xch(ss0);
  y=xch(ss1);
  r=xch(ss2);

  ll topn=y+r;
  ll rr=r*r;
  ll tmp=topn%10000;
  if (tmp<0)tmp+=10000;
  topn-=tmp;

  for(ll i=topn;i>=y-r;i-=10000){
    ll yy=abs(i-y);
    ll xx2=rr-yy*yy;
    if (xx2<0)continue;
    if (xx2==0){
      if (x%10000==0)ans++;
      continue;
    }
    double dx=sqrt(xx2);
    ll ldx=dx;
    if (ldx*ldx>xx2)ldx--;
    
      ans+=
      floordiv(x+ldx,10000)-floordiv(x-ldx+9999,10000)
      +1;
    
  }

  
  cout<<ans<<endl;

  
  return 0;
}
#include <bits/stdc++.h>
#define ll long long
#define V vector<long long>
#define VV vector<vector<long long>>
#define VVV vector<vector<vector<long long>>>
#define P pair<ll,ll>
#define rep(i,n) for(ll (i)=0;(i)<(n);++(i))
#define all(x) (x).begin(),(x).end()
using namespace std;

ll in(){
    double a;
    cin>>a;
    return round(a*10000);
}

bool ok(ll x,ll y, ll r){
    return x*x+y*y<=r*r;
}

ll f(ll x,ll y,ll z,ll lim){
    ll l=0;
    ll r=1;
    ll res=0;
    for(ll i=2e5;i>=lim;i--){
        while(ok(x-l*10000,i*10000-y,z))l--;
        while(ok(r*10000-x,i*10000-y,z))r++;
        res+=r-l-1;
    }
    return res;
}

int main(){
    ll x,y,r;
    x=in();
    y=in();
    r=in();
    x%=10000;
    y%=10000;
    cout<<f(x,y,r,1)+f(x,-y,r,0)<<endl;
}
