1. 程式人生 > >Vijos訓練計劃 1-1 計數問題

Vijos訓練計劃 1-1 計數問題

剛剛參加了Vijos的訓練計劃,很長時間不學習了,有一些東西都已經忘記了,但是昨天看到學長寫的程式碼,發現自己要走的路還很長,這道題時訓練計劃的第一題,所以難度比較簡單,下面附上程式碼。

#include<bits/stdc++.h>
/*
    作者:Unis
    日期:2018.3.23
    題目:計數問題
*/
using namespace std;

int JudgeIndex(int x){
    int t_x = x;
    int countx = 0;
    do{

        t_x /= 10;
        countx++;

    }while(t_x != 0);

    return countx;
}


int main() {
    //10 = 1和0 11 = 1 和 1
    int x,n;
    int flag[10];
    int t,e,countx=0;
    while(scanf("%d %d",&n,&x) != EOF){

        memset(flag,0,sizeof(flag));
        //testing
//        for(int i = 0;i < 22;i++){
//            printf("%d\n",i);
//        }

        for(int i = 1;i <= n;i++){
            t = i,e = i;

            if(i >= 10){

                countx = JudgeIndex(i);
                //printf("index=%d\n",countx);

                do{
        
                    e = t % 10;
                    t = t / 10;
                    flag[e]++;
                    countx--;

                }while(countx != 0);

            }
            else{
                flag[i]++;
            }

            //printf("flag = %d\n",flag[i]);

        }

        printf("%d\n" ,flag[x]);
    }
	return 0;
}