1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// potyczki_2015_rozgrzewka2.cpp : main project file.

#include <string>
#include <iostream>
#include <fstream>
#include <algorithm>
#include <list>
#include <math.h>
using namespace std;

long kwadraty(long long liczba){

	long wynik = 0;
	do{
		wynik += pow(liczba % 10, 2);
		liczba = liczba / 10;
	} while (liczba>0);

	return wynik;

};


int oblicz(long long k,long long pocz,long long koniec)
{
	long long start = pocz / k;

	long long n = (start+1) * k;
	//cout << "n start " << n << endl;
    int wynik = 0;
    long long max_zakres = ((int)log10(koniec)+1)*81*k;

    if (k > koniec) return 0;
	while (n <= max_zakres)
	{
	    long kw = kwadraty(n);
		if (kw*k == n) {
		    //cout << "mam:" << n << "kw:" << kw << endl;
		    wynik++;
        }
		n = n + k;
	}
	return wynik;
}



int main()
{
	long long k, pocz, koniec = 0;


//    std::fstream myfile("in.txt", std::ios_base::in);
    cin >> k >> pocz >> koniec;
    //cout << "start" << endl;
//    while (myfile >> k >> pocz >> koniec)

    {
        //cout << "k:"<<k << endl;
        //cout << "poczatek:" << pocz << endl;
        //cout << "koniec:" << koniec << endl;
        cout << oblicz(k,pocz,koniec);
    }

	return 0;
}