为什么计数整数不返回d的期望值?如数字?

时间:2017-05-29 05:13:57

标签: c++ algorithm math codewarrior

我正在处理来自代码大战的编码问题,我无法从测试值以及他们为您提供的示例测试中计算出正确的答案! 这是提示: “取整数n(n> = 0)和数字d(0 <= d <= 9)作为整数。将0和n之间的所有数字k(0 <= k <= n)平方计算在写入所有k ** 2时使用的位数d。调用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。

1 个答案:

答案 0 :(得分:1)

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