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

bool ok(long long dx, long long dy, long long R) {
    return dx * dx + dy * dy <= R * R;
}
long long f(long long x, long long y, long long R, long long lim) {
    int l = 0, r = 1;
    long long res = 0;
    for (int i = int(1e9) + 50000; i >= lim; i -= 10000) {
        while (ok(r * 10000 - x, i - y, R)) r++;
        while (ok(l * 10000 - x, i - y, R)) l--;
        res += r - l - 1;
    }
    return res;
}

int main() {
    long double sx, sy, sr;
    cin >> sx >> sy >> sr;
    long long X = round(sx * 10000LL), Y = round(sy * 10000LL),
              R = round(sr * 10000LL);
    X %= 10000;
    Y %= 10000;
    long long ans = f(X, Y, R, 10000);
    ans += f(X, -Y, R, 0);
    cout << ans << endl;
}
#include <algorithm>
#include <cctype>
#include <cmath>
#include <cstring>
#include <iostream>
#include <sstream>
#include <numeric>
#include <map>
#include <set>
#include <queue>
#include <vector>

using namespace std;

typedef long long LL;
typedef long double LD;
const LD EPS = 1e-14;

LL solve(long double X, long double Y, long double R) {
	LL ans = 0, cx = LL(round(X * 10000)), cy = LL(round(Y * 10000)), r = LL(round(R * 10000));
	for (LL y = (cy - r) / 10000 - 1; y <= (cy + r) / 10000; ++y) {
		LL dy = y * 10000 - cy;
		if (dy * dy > r * r) continue;
		long double w = sqrt((long double)(r * r - dy * dy));
		LL left = (cx - LL(w)) / 10000 - 2, right = (cx + LL(w)) / 10000 + 2;
		for (int i = 0; i < 4; ++i) {
			LL dx = left * 10000 - cx;
			if (dx * dx + dy * dy > r * r) {
				++left;
			}
			dx = right * 10000 - cx;
			if (dx * dx + dy * dy > r * r) {
				--right;
			}
		}
		ans += max(0LL, right - left + 1);
	}
	return ans;
}

LL solve2(long double X, long double Y, long double R) {
	LL ans = 0;
	for (LL y = Y - R - 1; y <= Y + R + 1; ++y) {
		LD w = sqrt(max((LD)0.0, R * R - (y - Y) * (y - Y)));
		LL left = X - w - 1, right = X + w + 1;
		for (int i = 0; i < 2; ++i) {
			if (((left - X) * (left - X) + (Y - y) * (Y - y)) > R * R + EPS) {
				++left;
			}
			if (((right - X) * (right - X) + (Y - y) * (Y - y)) > R * R + EPS) {
				--right;
			}
		}
		ans += max(0LL, right - left + 1);
	}
	return ans;
}

int main() {
	long double X, Y, R;
	std::cin >> X >> Y >> R;
	cout << solve(X, Y, R) << endl;

#ifdef NDEBUG
	for (int t = 0; t < 10000000; ++t) {
		int x = (rand() % 10000) + 1;
		int y = (rand() % 10000) + 1;
		int r = (rand() % 10000) + 1;
		LD X = x * 0.0001;
		LD Y = y * 0.0001;
		LD R = r * 0.0001;
		X += rand() % 10;
		Y += rand() % 10;
		R += rand() % 10;

		LL a = solve(X, Y, R);
		LL b = solve2(X, Y, R);
		if (a != b) {
			cout << a << endl;
			cout << b << endl;
			cout << X << "," << Y << "," << R << endl;
			break;
		}
	}
#endif







	return 0;
}
