Problem 12. 不要62

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;
    }	
}

猜你喜欢

转载自blog.csdn.net/qq_43397186/article/details/85770042