W, M, K = map(int, input().split())
def f(N):
ANS = 0
for keta in range(1, 20):
lo = 10**(keta - 1)
hi = min(N, 10**keta - 1)
cnt = max(hi - lo + 1, 0)
ANS += keta * cnt
return ANS
ok = 0
ng = 1 << 100
while ok + 1 < ng:
x = (ok + ng) // 2
if (f(M + x - 1) - f(M - 1)) * K <= W:
ok = x
else:
ng = x
print(ok)
#include <bits/stdc++.h>
// #include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
#define fast ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define int long long int
#define double long double
#define MOD 1000000007
#define yes cout<<"YES"<<endl;
#define no cout<<"NO"<<endl;
#define endl "\n"
#define pb push_back
#define dplay(x) cout<<x<<endl;
#define bug(...) __f (#__VA_ARGS__, __VA_ARGS__)
#define print(a) for(auto x : a) cout << x << " "; cout << endl
#define print1(a) for(auto x : a) cout << x.first << " " << x.second << endl
#define fo(i, a, b) for (int i = a; i < b; i++)
#define fov(i, a, b) for (int i = a; i >= b; i--)
#define MOD2 998244353
#define sort(a) sort(a.begin(),a.end())
#define revsort(a) sort(a.rbegin(),a.rend())
// Maths Functions
int gcd(int a, int b){if (b == 0)return a;return gcd(b, a % b);} //__gcd
int lcm(int a, int b){return (a/gcd(a,b)*b);}
// string str;
// str = bitset<32>(3).to_string(); // converts int to binary string;
// cout<<str;
#define set_bits(x) __builtin_popcount(x) // count no of 1 in binary representation
using namespace __gnu_pbds;
using namespace std;
// typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> pbds; // find_by_order, order_of_key
inline int power(int po1, int po2)
{
int po3 = 1;
while (po2)
{
if (po2 & 1) po3 *= po1;
po1 *= po1;
po2 >>= 1;
}
return po3;
}
int power2(int a, int b, int m) {
if(b==0) {
return 1;
}
if(b%2 == 0) {
int t = power2(a, (b/2), m);
return (1ll*t*t)%m;
}
else {
int t = power2(a, (b-1)/2, m);
t = (1ll*t*t)%m;
return (1ll*a*t)%m;
}
}
template <typename Arg1>
void __f (const char* name, Arg1&& arg1) { cerr << name << " : " << arg1 << endl; }
template <typename Arg1, typename... Args>
void __f (const char* names, Arg1&& arg1, Args&&... args)
{
const char* comma = strchr (names + 1, ',');
cerr.write (names, comma - names) << " : " << arg1 << " | "; __f (comma + 1, args...);
}
int binaryToDecimal(int n)
{
int num = n;int dec_value = 0;int base = 1;
int temp = num;
while (temp) {
int last_digit = temp % 10;
temp = temp / 10;
dec_value += last_digit * base;
base = base * 2;
}
return dec_value;
}
int decToBinary(int n)
{
for (int i = 31; i >= 0; i--) {
int k = n >> i;
if (k & 1)
cout << "1";
else
cout << "0";
}
return n;
}
unsigned long long power(unsigned long long x,
int y, int p)
{
unsigned long long res = 1; // Initialize result
x = x % p; // Update x if it is more than or // equal to p
while (y > 0)
{ // If y is odd, multiply x with result
if (y & 1)
res = (res * x) % p;
// y must be even now
y = y >> 1; // y = y/2
x = (x * x) % p;
}
return res;
}
// Returns n^(-1) mod p
unsigned long long modInverse(unsigned long long n,
int p)
{
return power(n, p - 2, p);
}
// Returns nCr % p using Fermat's little
// theorem.
unsigned long long nCrModPFermat(unsigned long long n,
int r, int p)
{
// If n<r, then nCr should return 0
if (n < r)
return 0;
// Base case
if (r == 0)
return 1; // Fill factorial array so that we// can find all factorial of r, n// and n-r
unsigned long long fac[n + 1];
fac[0] = 1;
for (int i = 1; i <= n; i++)
fac[i] = (fac[i - 1] * i) % p;
return (fac[n] * modInverse(fac[r], p) % p
* modInverse(fac[n - r], p) % p)
% p;
}
int bs_sqrt(int x) {
int left = 0, right = 2000000123;
while (right > left) {
int mid = (left + right) / 2;
if (mid * mid > x) right = mid;
else left = mid + 1;
}
return left - 1;
}
const int N = 2e5 + 5, inf = INT64_MAX, mod = 1e9 + 7;
vector<int> parent(N);
vector<int> sz(N);
int findset(int u){
if(parent[u] == u) return u;
parent[u] = findset(parent[u]);
return parent[u];
}
void unionset(int u, int v){
int x = findset(u), y = findset(v);
if(x == y) return;
if(sz[x] >= sz[y]){
parent[y] = x;
sz[x] += sz[y];
}
else{
parent[x] = y;
sz[y] += sz[x];
}
}
vector<int> primeFactors(int n) {
vector<int> pf;
if(n%2 == 0) pf.push_back(2);
while (n % 2 == 0) {
n = n/2;
}
for (int i = 3; i <= sqrtl(n); i = i + 2) {
if(n%i == 0) pf.push_back(i);
while (n % i == 0) {
n = n/i;
}
}
if (n > 2) pf.push_back(n);
return pf ;
}
vector<int> printDivisors(int n) {
vector<int>div;
for (int i=1; i<=sqrtl(n); i++) {
if (n%i == 0) {
if (n == i*i)
div.push_back(i);
else {
div.push_back(i);
div.push_back((n/i));
}
}
}
return div;
}
vector<int> Sieve(int n) {
vector<int> prime(n+1, 1);
prime[0] = 0;
prime[1] = 0;
for(int p = 2; p * p <= n; p++)
{
if(prime[p] == 1)
{
for (int i = p * p; i <= n; i += p)
prime[i] = 0;
}
}
vector<int> prm;
for (int p = 2; p <= n; p++)
if (prime[p])
prm.push_back(p);
return prm;
}
int allFloor(int a, int b) {
int val = a / b;
while (val * b > a)
val--;
return val;
}
int t,n,tc,sizey;
void Dipankar()
{
int w,m,k;
cin>>w>>m>>k;
w/=k;
int ans=0,lengthofdigit=1;
int powof10=1;
while(w > 0){
powof10*=10;
if(powof10<m){
lengthofdigit++;
continue;
}
int y=(powof10-m)*(lengthofdigit),z=min(y,w);
w-=z;
z/=lengthofdigit;
ans+=z;
m=powof10;
lengthofdigit++;
}
cout<<ans<<endl;
}
int32_t main() {
// your code goes here Dipankar ka code
fast
clock_t z = clock();
t=1;
// cin>>t;
for( tc=1;tc<=t;tc++)
{
Dipankar();
}
cerr << "Run Time : " << ((double)(clock() - z) / CLOCKS_PER_SEC);
return 0;
}
467B - Fedor and New Game | 252C - Points on Line |
735C - Tennis Championship | 992A - Nastya and an Array |
554A - Kyoya and Photobooks | 79B - Colorful Field |
265B - Roadside Trees (Simplified Edition) | 1362C - Johnny and Another Rating Drop |
1214C - Bad Sequence | 1091B - New Year and the Treasure Geolocation |
244A - Dividing Orange | 1061C - Multiplicity |
1312A - Two Regular Polygons | 801A - Vicious Keyboard |
510B - Fox And Two Dots | 616D - Longest k-Good Segment |
1604A - Era | 555B - Case of Fugitive |
551A - GukiZ and Contest | 1399F - Yet Another Segments Subset |
1371C - A Cookie for You | 430B - Balls Game |
1263A - Sweet Problem | 1332B - Composite Coloring |
254A - Cards with Numbers | 215A - Bicycle Chain |
1288B - Yet Another Meme Problem | 1201C - Maximum Median |
435A - Queue on Bus Stop | 1409B - Minimum Product |