Я работаю над проблемой кодирования из кодовых войн, и у меня возникают проблемы с вычислением правильного ответа, который он ожидает от тестовых значений, а также от примеров тестов, которые они вам дают!
Вот подсказка:
«Возьмите целое число n (n> = 0) и цифру d (0 <= д <= 9) как целое число. Квадрат всех чисел к (0 <= к <= n) от 0 до n. Подсчитайте количество цифр d, использованных при записи всех k ** 2. Вызовите функцию nb_dig (или nbDig или …), принимая n и d в качестве параметров и возвращая этот счетчик. «
#include <iostream>
#include <string>
#include <vector>
#include <cmath>
#include<array>
#include<assert.h>
#include<fstream>
using namespace std;
class CountDig
{
public:
static int nbDig(int n, int d);
};
int CountDig::nbDig(int n, int d)
{
int count = 0;
for (int i = 0; i < n; i++)
{
int j = i;
while (j > 0)
{
if (j % 10 == d)
count++;
j /= 10;
}
}
return count;
}
int main()
{
CountDig cnt;
//count.nbDig();
cout << cnt.nbDig(10, 1) << endl;
system("PAUSE");
return 0;
}
И один из примеров, используемых для параметров n и d:
nbDig (10,1) и nbDig (25,1). Для nbDig (10,1) ожидаемый ответ должен быть 4, а для nbDig (25,1) — 11.
int countDigit( int num, int digit ) {
if( num == 0 && digit == 0 ) return 1; // special case initial condition for 0 and 0
int count = 0;
int j = i;
while (j > 0)
{
if (j % 10 == d)
count++;
j /= 10;
}
return count;
}
Других решений пока нет …