Cod sursa(job #140995)

Utilizator scvalexAlexandru Scvortov scvalex Data 22 februarie 2008 16:54:06
Problema Pascal Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <iostream>
#include <fstream>

using namespace std;

int R,
	D;

long pN, pK, pNK;

int nrdiv(int n, int D) {
	if (4 == D)
		D = 2;

	int r(0);
	for (long i = D; i <= n; i *= D) 
		r += n / i;

	return r;
}

int main(int argc, char *argv[]) {
	ifstream fin("pascal.in");
	fin >> R >> D;
	fin.close();

	//cout << R << " " << D << endl;

	pN = nrdiv(R, D);
	//cout << pN << endl;

	long res(0);
	for (int k(1); k <= R / 2; ++k) {
		pK = nrdiv(k, D);
		pNK = nrdiv(R - k, D);

		int vah = pN - pK - pNK;
		if (4 == D)
			vah /= 2;

		//cout << k << " " << pK << " " << pNK << " -> " << vah << endl;
		if (vah)
			if ((R % 2 == 0) && (k == R / 2))
				++res;
			else
				res += 2;
	}

	ofstream fout("pascal.out");
	fout << res << endl;
	fout.close();

	return 0;
}