首页 > 其他 > 详细

洛谷p1980

时间:2018-12-07 23:46:19      阅读:216      评论:0      收藏:0      [点我收藏+]

计数问题

题目描述

试计算在区间 1 到 n的所有整数中,数字x(0 ≤ x ≤ 9)共出现了多少次?例如,在 111中,即在 1,2,3,4,5,6,7,8,9,10,11 中,数字 11出现了 4 次。

输入输出格式

输入格式:

 

2个整数n,x,之间用一个空格隔开。

 

输出格式:

 

1个整数,表示x出现的次数。

说明

对于 100%的数据,1≤ n ≤ 1,000,000,  0 ≤ x ≤ 9

注意到说明里的内容,n≤1,000,000,故以前做这题的方法(先算出是几位数,再分别加)就失效了,故参考了题解,得出简单易懂的做法:

#include<stdio.h>
int main()
{
int x,a[10]={0},b,c;
long long n;
scanf("%lld%d",&n,&x);
for(int i=1;i<=n;i++)
{ b=i;
while(b!=0)
{
c=b%10;
b=b/10;
a[c]++;
}
}
printf("%d",a[x]);
return 0;
}

其中b为代替i的量,因为i需要从1到n递增,不能变化(如i%10,i/10等),所以通过b来代替i。

c=b%10;b=b/10;依次得出的c就是i从个位到最高位的位数。

洛谷p1980

原文:https://www.cnblogs.com/CrossingX/p/10085798.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!