您的位置:首页 > 其它

hiho一下 第181周(少于两位前面补0的方法)

2017-12-22 15:10 316 查看

描述

Consider a binary watch with 5 binary digits to display hours (00 - 23) and 6 binary digits to display minutes (00 - 59).

For example 11:26 is displayed as 01011:011010.  

Given a number x, output all times in human-readable format "hh:mm" when exactly
x digits are 1.  

输入

An integer x. (0 ≤ x ≤ 9)  

输出

All times in increasing order.  

样例输入
1

样例输出
00:01
00:02
00:04
00:08
00:16
00:32
01:00
02:00
04:00
08:00
16:00


题意:

给出一个数字n,问哪些hh:mm的二进制中1的个数恰好有  n  个数

题解:

枚举24 + 60 的二进制都有多少个1,少于两位的时候前面补0的方法

printf("%02d:%02d\n",i,j);

#include<stdio.h>

int h[25],m[60];
int deal(int x){
int ans=0;
while(x)
ans+=x%2,x/=2;
return ans;
}
void init(){
for(int i=0;i<24;i++)
h[i]=deal(i);
for(int i=0;i<60;i++)
m[i]=deal(i);
}

int main()
{
int n;
init();
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<24;i++)
for(int j=0;j<60;j++)
if(h[i]+m[j]==n)
printf("%02d:%02d\n",i,j);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: