/*
1 ... 11中,含4个1
Press any key to continue
*/
// count.in : 11 1
#include
int IncludeX(int n, int x) {
int i,m,sum = 0;
for(i = 1; i <= n; ++i) {
m = i;
while(m) {
if(m % 10 == x) ++sum; // 检查各位是否有x,有则改写计数器
m /= 10; // 下轮检查高一位
}
}
return sum;
}
int main() {
int n,x,sum;
FILE *inFile, *outFile;
inFile = fopen("count.in","rt");
outFile = fopen("count.out","wt");
if(inFile == NULL || outFile == NULL) {
printf("打开文件失败。\n");
return 1;
}
fscanf(inFile,"%d%d",&n,&x);
fclose(inFile);
sum = IncludeX(n,x);
printf("1 ... %d中,含%d个%d\n",n,sum,x);
fprintf(outFile,"%d\n",sum);
fclose(outFile);
return 0;
}
#include
#include
void count(int a[],int n)
{
int mod,i,temp=1,nn=n;
for(i=0;i<10;a[i]=0,i++);
if(n<10)
{
for(i=1;ireturn ;
}
while(n>=10)
{
mod=n%10;
n/=10;
for(i=0;i<10;i++)
a[i]+=temp*n;
for(i=1;i<=mod-1;i++)
a[i]+=temp;
a[mod]+=( mod==0 ? nn%temp-temp+1 : nn%temp+1 ); // ????????????????
temp*=10;
}
for(i=1;i<=n-1;i++)
a[i]+=temp;
a[n]+=nn-n*temp+1;
}
int main()
{
int n1,n2,a[10],b[10],i;
while( scanf("%d%d",&n1,&n2)!=EOF && n1 && n2 )
{
if(n1>n2)
n1=n1+n2,n2=n1-n2,n1=n1-n2;
count(a,n1-1);
count(b,n2);
for(i=0;i<10;i++)
printf("%d ",b[i]-a[i]);
printf("\n");
}
return 0;
}
参考这段代码哈,这是我在ACM OJ上AC过的代码,满意请采纳。