#include <bits/stdc++.h>
using namespace std;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0);

	long double x, y, r;
	cin >> x >> y >> r;

	r = nextafter(r, 1001001001001001001LL);
	long long answer = 0LL;
	for (long long i = ceil(x - r); i <= floor(x + r); i++) {
		long double a = r * r - (i - x) * (i - x);
		answer += floor(y + sqrtl(a)) - ceil(y - sqrtl(a)) + 1LL;
	}
	cout << answer;
}
#define _USE_MATH_DEFINES
#include <bits/stdc++.h>
using namespace std;
#define FOR(i,m,n) for(int i=(m);i<(n);++i)
#define REP(i,n) FOR(i,0,n)
#define ALL(v) (v).begin(),(v).end()
using ll = long long;
constexpr int INF = 0x3f3f3f3f;
constexpr long long LINF = 0x3f3f3f3f3f3f3f3fLL;
constexpr double EPS = 1e-8;
constexpr int MOD = 1000000007;
// constexpr int MOD = 998244353;
constexpr int dy[] = {1, 0, -1, 0}, dx[] = {0, -1, 0, 1};
constexpr int dy8[] = {1, 1, 0, -1, -1, -1, 0, 1}, dx8[] = {0, -1, -1, -1, 0, 1, 1, 1};
template <typename T, typename U> inline bool chmax(T &a, U b) { return a < b ? (a = b, true) : false; }
template <typename T, typename U> inline bool chmin(T &a, U b) { return a > b ? (a = b, true) : false; }
struct IOSetup {
  IOSetup() {
    std::cin.tie(nullptr);
    std::ios_base::sync_with_stdio(false);
    std::cout << fixed << setprecision(20);
  }
} iosetup;

std::vector<std::string> split(const std::string &s, const std::string &delimiter) {
  std::vector<std::string> res;
  int pos = 0;
  while (true) {
    int del_pos = s.find(delimiter, pos);
    if (del_pos == s.npos) break;
    res.emplace_back(s.substr(pos, del_pos - pos));
    pos = del_pos + delimiter.length();
  }
  res.emplace_back(s.substr(pos));
  return res;
}

constexpr int L = 10000;

int format(string s) {
  vector<string> v = split(s, ".");
  int x = stoi(v[0]) * L;
  if (v.size() == 1) return x;
  while (v[1].length() < 4) v[1] += '0';
  return x + stoi(v[1]);
}

ll ceilL(ll x) {
  return x >= 0 ? (x + L - 1) / L * L : x / L * L;
}

int main() {
  string xs, ys, rs; cin >> xs >> ys >> rs;
  ll x = format(xs), y = format(ys), r = format(rs);
  ll ans = 0;
  for (ll h = ceilL(y - r); h <= y + r; h += L) {
    ll l = x - r - 1;
    {
      ll ub = x;
      while (ub - l > 1) {
        ll mid = (l + ub) >> 1;
        ((y - h) * (y - h) + (x - mid) * (x - mid) <= r * r ? ub : l) = mid;
      }
      ++l;
    }
    ll ri = x + r + 1;
    {
      ll lb = x;
      while (ri - lb > 1) {
        ll mid = (lb + ri) >> 1;
        ((y - h) * (y - h) + (mid - x) * (mid - x) <= r * r ? lb : ri) = mid;
      }
      --ri;
    }
    // cout << h << ' ' << l << ' ' << r << '\n';
    l = ceilL(l);
    if (l <= ri) ans += (ri - l) / L + 1;
  }
  cout << ans << '\n';
  return 0;
}
