列表

详情


BC153. [NOIP2010]数字统计

描述

请统计某个给定范围[L, R]的所有整数中,数字2出现的次数。

比如给定范围[2, 22],数字2在数2中出现了1次,在数12中出现1次,在数20中出现1次,在数21中出现1次,在数22中出现2次,所以数字2在该范围内一共出现了6次。

输入描述

输入共1行,为两个正整数L和R,之间用一个空格隔开。

输出描述

输出共1行,表示数字2出现的次数。

示例1

输入:

2 22

输出:

6

示例2

输入:

2 100

输出:

20

原站题解

C 解法, 执行用时: 2ms, 内存消耗: 308KB, 提交时间: 2022-08-03

#include<stdio.h>
int num_two(int L,int R)
{
    int count = 0;
    for(int i = L;i<=R;i++)
    {
        int ret = i;
        while(ret)
        {
            if(ret % 10==2)
            {
                count++;
            }
            ret = ret/10;
        }
    }
    return count;
}


int main()
{
    int L,R;
    scanf("%d %d",&L,&R);
    printf("%d\n",num_two(L,R));
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 308KB, 提交时间: 2022-03-22

#include<stdio.h>
int num_two(int l, int r)
{
	int count = 0;
	for (int i = l; i <= r; i++)
	{
		int ret = i;
		while (ret)
		{
			if (ret % 10 == 2)
				count++;
			ret /= 10;
		}
	}
	return count;
}
int main()
{
	int l, r;
	scanf("%d%d", &l, &r);
	printf("%d\n", num_two(l, r));
	return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 312KB, 提交时间: 2022-03-15

#include<stdio.h>

int main(void)
{
    int L;
    int R;
    int num = 0;
    scanf("%d%d",&L,&R);
    for(int i=L;i<=R;i++)
    {
        int temp = i;
        while(temp!=0)
        {
            if(temp%10==2)
            {
                num++;
            }
            temp = temp/10;
        }
    }
    printf("%d\n",num);
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 320KB, 提交时间: 2022-06-16

#include <stdio.h>
int judge(int num){
    int flag = 0;
    while(num){
        int res = num % 10;
        if(res == 2)
            flag ++;
        num /= 10;
    }
    return flag;
}

int main(){
    int l, r, count = 0;
    scanf("%d %d", &l, &r);
    for(int i = l; i <= r; i++)
        count += judge(i);
    printf("%d", count);
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 320KB, 提交时间: 2022-06-11

#include <stdio.h>
#include <stdlib.h>

int fun1(int s)
{
    int n=0;
    while(s)
    {
        if(s%10==2)
            n++;
        s/=10;
    }
    return n;
}
int main()
{
    int a,b,sum=0;
    scanf("%d %d",&a,&b);
    for(int i=a;i<=b;i++)
    {
        sum+=fun1(i);
    }
    printf("%d",sum);
    return 0;
}

上一题