ACM_ZHANGZHANG喜歡手表
阿新 • • 發佈:2018-06-28
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喜歡手表