1. 程式人生 > >ACM_ZHANGZHANG喜歡手表

ACM_ZHANGZHANG喜歡手表

for 通過 手表 c代碼 () 數據 CM 主機 朋友

ZHANGZHANG喜歡手表

Time Limit: 2000/1000ms (Java/Others)

Problem Description:

ZHANGZHANG剛過生日,收到了好朋友NENGNENG挖寶藏挖到的一個手表,可喜歡了。
技術分享圖片
 
ZHANGZHANG發現,這個手表跟電腦主機後面的時鐘有著極大的相似性,於是ZHANGZHANG決定對它進行深入研究。
技術分享圖片
通過收集資料ZHANGZHANG發現,這裏每個數字的顯示是由8個LED燈來決定的,LED燈的亮與暗決定了最終顯示的數字。因為一個數字有顯示一共有8個LED燈,分別給它們標上abcdefgh,就得到下面這圖。 
技術分享圖片
聰明的ZHANGZHANG一下子就想到了可以用一個8位的二進制來表示一個數字,如數字0,那麽就可以把abcdef燈置為1,其他置為0,於是得到一個數字 00111111 (即hgfedcba)。其他數字如下圖 
技術分享圖片
那麽,手表上有四個數字,肯定就可以用一個32位的二進制整數來表示,那麽給你一個時間,輸出對應的整數。

Input:

輸入有多組數據數據,每組數據一行,輸入一個時間,格式為HH:mm。

Output:

對於每組數據,輸出一個32位整數(輸出十進制)。

Sample Input:

00:00
01:23
23:59

Sample Output:

1061109567
1057381199
1531932015
Hints:
樣例2中,對應的32位二進制為 00111111000001100101101101001111,它的十進制是1057381199。
解題思路:註意:0~9這10個數字中h燈的狀態始終為0。做法:將數字對應的字符串(顯示狀態)相加,再從右往左求32位二進制的10進制即可,水過。

AC代碼:
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main(){
 4     string hour,obj,str[]={"00111111","00000110","01011011","01001111",
 5     "01100110","01101101","01111101","00000111","01111111","01101111"};
 6     int ans,base;
 7     while(cin>>hour){
 8         obj=str[hour[0]-0]+str[hour[1]-0]+str[hour[3
]-0]+str[hour[4]-0]; 9 ans=0;base=1; 10 for(int i=31;i>=0;--i){ 11 if(obj[i]==1)ans+=base; 12 base*=2; 13 } 14 cout<<ans<<endl; 15 } 16 return 0; 17 }

ACM_ZHANGZHANG喜歡手表