Problem 12. 不要62
阿新 • • 發佈:2019-01-05
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; } }