刚刚参加了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;
}