#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <cmath>
#include <queue>
#include <map>
#include <iomanip>
using namespace std;
using ll = long long int;

vector<string> myspliter(const string &s, const char delimiter){
    vector<string> res;
    string part = "";
    for(auto &p: s){
        if(p == delimiter){
            if(part.length() > 0) res.push_back(part);
            part = "";
        }else{
            part += p;
        }
    }
    if(part.length() > 0) res.push_back(part);
    return res;
}

ll transToInt(vector<string> str){
    ll ans = 0;
    ans += stoi(str[0])*10000;
    if(str.size() == 2){
        while(str[1].length() < 4) str[1] += '0';
        ans += stoi(str[1]);
    }
    return ans;
}

ll solve(ll x, ll y, ll r){
    ll ans = 0;
    for(ll i = -2'000'000'000; i <= 2'000'000'000; i += 10000){
        if(r*r-(i-y)*(i-y) < 0) continue;

        ll inner = x;
        ll outer = 4'000'000'000;
        ll border = r*r-(i-y)*(i-y);
        while(outer-inner > 1){
            ll mid = (outer+inner)/2;
            if((mid-x)*(mid-x) <= border) inner = mid;
            else outer = mid;
        }
        ll left = x*2-inner;
        ll right = inner;
        if(left <= 0){
            left = left/10000 - 1;
        }else{
            left = (left-1)/10000;
        }
        if(right < 0){
            right = (right+1)/10000;
        }else{
            right = right/10000 + 1;
        }
        ans += max(right - left - 1, 0LL);
        // if(right > 1 && left < -1) ans++;
        // if(i == 00000) cerr << left << " " << right << " " << inner << endl;
    }
    return ans;
}

int main(){
    string x0, y0, r0;
    cin >> x0 >> y0 >> r0;
    ll x = transToInt(myspliter(x0, '.'));
    ll y = transToInt(myspliter(y0, '.'));
    ll r = transToInt(myspliter(r0, '.'));

    cout << solve(x, y, r) << endl;
    return 0;
}
#ifdef Rahul
#include "RAHUL.h"
#else
#include <bits/stdc++.h>
using namespace std;
#define error(...) 42;
#endif
#define SZ(v) int((v).size())
#define ALL(vec) begin(vec), end(vec)
typedef long long i64;
template<typename T> inline bool uax(T &x, T y) {return (y > x) ? x = y, true : false;}
template<typename T> inline bool uin(T &x, T y) {return (y < x) ? x = y, true : false;}
template<typename T> void kek(T ans) {cout << ans << endl; exit(0);}
#define Luv(...) [&] (auto &&u, auto &&v) { return __VA_ARGS__; }
const int MOD = (int) 1e9 + 7;
const i64 INF = (i64) 1e18 + 42;

const long double eps = 1e-9;

int main() {
  cin.tie(nullptr) -> sync_with_stdio(false);
  long double X, Y, r; cin >> X >> Y >> r;
  long double r2 = r * r;
  i64 ans = 0;
  for (int x = int(X - r - 2); x <= int(X + r + 2); ++x) {
    int uy, dy;
    long double dx = (X - x) * (X - x);
    {
      int lo = Y - r - 2, hi = Y;
      while (lo < hi) {
        int md = (lo + hi) >> 1;
        if (dx + (Y - md) * (Y - md) <= r2 + eps) hi = md;
        else lo = md + 1;
      }
      dy = lo;
    }
    {
      int lo = ceil(Y) + eps, hi = Y + r + 2;
      while (lo < hi) {
        int md = (lo + hi + 1) >> 1;
        if (dx + (Y - md) * (Y - md) <= r2 + eps) lo = md;
        else hi = md - 1;
      }
      uy = lo;
    }
    if (dx + (Y - dy) * (Y - dy) > r2 + eps) {
      ++dy;
    } 
    if (dx + (Y - uy) * (Y - uy) > r2 + eps) {
      --uy;
    } 
    if (uy >= dy) ans += uy - dy + 1;
  }
  kek(ans);
} 