/*
试计算在区间 1 到 n 的所有整数中,数字 x(0 ≤ x ≤ 9)共出现了多少次?
例如,在 1到 11 中,即在 1、2、3、4、5、6、7、8、9、10、11 中,数字 1 出现了 4 次。
对于 100%的数据,1≤ n ≤ 1,000,000,0 ≤ x ≤ 9。
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int approach(int n,char x ); //统计字符串中出现x的个数
char* change(int num);//将输入的数字转化为字符串
int main()
{
int n=0,num=0,count=0;
char x;
scanf("%d %c",&n,&x);//输入最最大数范围1~n,输入要查找的数x
count= approach(n,x);//统计x的个数
printf("%d",count);
return 0;
}
int approach(int n,char x )
{
int num=0,count=0,i;
char Str_save[100];
char *q;
for(i=1;i<=n;i++)
{
num=i;
q=change(num);
while(*q)
{
if(*q==x)
count++;
q++;
}
}
return count;
}
char* change(int num)
{
int number,j,k;
char String[100];
number=num;
for(j=1;num>=10;++j)
num=num/10;
for(k=j-1;k>=0;k--) //将数字转化为字符串
{
String[k]=number%10+'0'; //数字+'0'=字符数字,比如2->'2';
number=number/10;
}
String[j]=0;
return String;
}
洛谷 P1980 计数问题
最新推荐文章于 2024-01-27 00:08:58 发布