#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;
}

#include <bits/stdc++.h>
//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>
//#include <ext/pb_ds/priority_queue.hpp>
//#include <ext/pb_ds/hash_policy.hpp>
using namespace std;
//using namespace __gnu_pbds;

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<ll> vll;
//typedef gp_hash_table<int, int> hashmap;
//typedef tree<pii, null_type, std::less<pii>, splay_tree_tag, tree_order_statistics_node_update> splaytree;
//typedef tree<pii, null_type, std::less<pii>, rb_tree_tag, tree_order_statistics_node_update> rbtree;
//typedef __gnu_pbds::priority_queue<int, std::greater<int>, __gnu_pbds::binary_heap_tag> binheap;
//typedef __gnu_pbds::priority_queue<int, std::greater<int>, __gnu_pbds::pairing_heap_tag> pairingheap;

template <typename T>
inline void read(T &x)
{
    T data = 0, f = 1;
    char ch = getchar();
    while (!isdigit(ch))
    {
        if (ch == '-')
            f = -1;
        ch = getchar();
    }
    while (isdigit(ch))
    {
        data = (data << 3) + (data << 1) + ch - '0';
        ch = getchar();
    }
    x = f * data;
}
template <typename T, typename... Args>
inline void read(T &t, Args &...args)
{
    read(t);
    read(args...);
}
#define double long double
//mt19937 rnd(time(0));
const int inf = 0x3f3f3f3f;
const double eps = 1e-14;
const int maxn = 5e3 + 9;
const ll mod = 998244353;
double x, y, r;

ll ans;
int sgn(double dx)
{
    if (fabs(dx) <= eps)
        return 0;
    if (x > 0)
        return 1;
    return -1;
}
signed main()
{
    cin >> x >> y >> r;
	r += eps;
    ll L = ceil(y - r), R = floor(y + r);
    if (sgn(y - r - L + 1.0) == 0)
        L--;
    if (sgn(y + r - R - 1) == 0)
        R++;
    for (ll i = L; i <= R; ++i)
    {
        double dy = i;
        double ny = y - dy;
        double dx = sqrt(r * r - ny * ny);
        ll l = ceil(x - dx), r = floor(x + dx);
        if (sgn(x - dx - l + 1.0) == 0)
            l--;
        if (sgn(x + dx - r - 1) == 0)
            r++;
        if (r >= l)
        {
            ans += r - l + 1;
        }
    }
    cout << ans << '\n';
    return 0;
}