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

#define ll long long
#define print(a)        for (auto x : a) cout << x << " "; cout << endl
#define print_upto(a,n)        for(ll i=1;i<=n;i++)    cout<<a[i]<<" "; cout<<endl
#define take(a,n)           for(ll i=1;i<=n;i++)  cin>>a[i];

#define watch(x) cout << (#x) << " is " << (x) << "\n"
#define watch2(x,y) cout <<(#x)<<" is "<<(x)<<" and "<<(#y)<<" is "<<(y)<<"\n"
#define watch3(x,y,z) cout <<(#x)<<" is "<<(x)<<" and "<<(#y)<<" is "<<(y)<<" and "<<(#z)<<" is "<<(z)<<"\n"

#define ff first
#define ss second
#define null NULL
#define all(c) (c).begin(),(c).end()
#define nl "\n"

#define ld long double
#define eb emplace_back
#define pb push_back
#define pf push_front
#define MOD 1000000007
#define inf INT_MAX
// cout << fixed << setprecision(9) << ans << nl;

typedef vector<ll> vl;
typedef vector< vl > vvl;
typedef pair< ll, ll> pll;
typedef map< ll, ll> mll;

const ll N = 200009;

void solve() {
	ld x, y, r;
	cin>>x>>y>>r;

	double ep = 1e-14;
	r = r + ep;

	ld lx = x-r;
	ld rx = x+r;

	ld llx = ceil(lx);
	ld rrx  = floor(rx);

	ll ans=0;
	for(ld i=llx;i<=rrx;i++){
		ld res = (r*r) - (i-x)*(i-x);
		if(res<0)
			continue;
		res = sqrt(res);

		ld ly = res + y;
		ld ry = -res + y;

		ld lly = ceil(ry);
		ld rry = floor(ly);

		ans += (ll)(rry-lly+1);
	}

	cout<<ans<<nl;
}



int main() {

	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	ll t = 1;
	// cin >> t;

	while (t--) {
		solve();
	}

	return 0;
}

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;

ll solve(ld x, ld y, ld r) {
    ll res = 0ll;
    ll top = floor(y + r);
    ll under = ceil(y - r);
    r= nextafter(r, INFINITY);

    for(ll i = top; i >= under; i--) {
        ld width = sqrt(r * r - abs(i - y) * abs(i - y));
        res += floor(x + width) - ceil(x - width) + 1;
    }

    return res;
}

int main() {
    ld x, y, r;
    cin >> x >> y >> r;
    cout << solve(x, y, r) << endl;
}
