0

我正在处理代码大战中的一个编码问题,我无法计算它期望从测试值以及它们给你的示例测试中得到的正确答案!这里是提示:“取一个整数 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

4

1 回答 1

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;
}
于 2017-05-29T07:30:42.110 回答