Problem 12. 不要62

本文介绍了一种车牌号过滤算法,该算法旨在从指定的车牌号区间内筛选出不含不吉利数字4和连号62的车牌号。通过使用两个数组进行状态记录和数字判断,有效地实现了车牌号的有效性检查,并通过优化循环逻辑减少了不必要的计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Problem 12. 不要62

题目简述:

    对于每次给出的一个牌照区间号,推断出要实际上给多少辆新的士车上牌照了。车牌号中不包含不吉利数字4和62(连号)。

解题思路:

首先,我是用一个数组b来存放每个车牌号的每个数字用于判断车牌号是否可用,另一个数组a用来存放车牌号的状态(1代表可用车牌号,0则代表不可用),最后将数组a求和即可用的车牌号数。

细节处理:

用数组b判断车牌号是否可用时,只要有一位数为不吉利数字即可跳出循环,用于减少循环次数。如if(b[j]==4){ a[i]=0; break; }

源代码:

#include<iostream>
using namespace std;
int a[1000010],b[10];
int main()
{
    int i,x,y,j,k,sum;
    for(i=0;i<1000010;i++)
    {
        k=i;
        a[i]=1;
        for(j=0;k!=0;j++)
        {
            b[j]=k%10;
            k/=10;
        }
        while(j--)
        {
            if(b[j]==4)
            {
                a[i]=0;
                break;//遇到4跳出即可,减少循环次数
            }
            else if(b[j]==6)
            {
                if(b[j-1]==2)
                {
                    a[i]=0;
                    break;
                }
            }
        }
    }
    while(cin>>x>>y)
    {
        sum=0;
        if(!x&&!y)
        break;
        else
        {
            for(i=x;i<=y;i++)
            sum+=a[i];
        }
        cout<<sum<<endl;
    }	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值