求1到N之间出现了几次数字x(x为1到9)

求1到N之间出现了几次数字x(x为1到9)

思想:


假设5位数n=abcde,看百位c出现x的次数为:

ab=abcde/(100*10);

cde=abcde-abcde/100*100

当cx时,那么count(c)的次数为:(ab+1)*100
代码如下


#include 
using namespace std;

int count_x(int n,int x){
    
    if(x<0||x>9)
    return 0;
    
    int count = 0;
    int factor = 1;
    int low = 0, cur = 0, high = 0;

    while(n/factor != 0){
        low = n - (n/factor) * factor;//低位数字
        cur = (n/factor) % 10;//当前位数字
        high = n / (factor*10);//高位数字

        if(curx)
            count += (high + 1) * factor;



        factor *= 10;
    }

    return count;
}


int main(){
    
    int n,x;
    cout<<"输入n x(1-9):"<>n>>x;
    cout<<"1到"<


你可能感兴趣的:(算法)