1146: 5004 周易
题目描述
有人说,中国古代的“周易”是二进制系统的起源,在该系统中,他们用“- -”表示1,“---”表示0。因此,二进制数字“011010”可以表述为“---\n- -\n- -\n---\n- -\n---\n”(符号“\n”表示换行)。现在的问题是如何把一个十进制数转换为“周易”中的二进制?
输入
文件中包含多组测试数据。每个测试数据占一行,包括一十进制整数n(0 <= n <= 1000000)和表示二进制位数的k(0 < k <= 20 且 n < 2k)。
n=0,k=0表示输入结束。
输出
对于每组测试数据,输出“周易”中对应的k行二进制数。每组测试数据之间输出一个空行。
样例输入 复制
7 3
0 3
26 6
0 0
样例输出 复制
- -
- -
- ----
---
------
- -
- -
---
- -
---
#include<iostream>
using namespace std;
int main()
{int n;int k;int a[10005];while(scanf("%d%d",&n,&k)!=EOF){int len = 0;if(n==0&&k==0)break;while(n){a[len] = n%2;n/=2;len++;}if(len==k){for(int i =len-1;i>=0;i--){if(a[i]==1)printf("- -\n");elseprintf("---\n");}printf("\n");}if(len<k){for(int j = 0;j<(k-len);j++)printf("---\n");for(int i =len-1;i>=0;i--){if(a[i]==1)printf("- -\n");elseprintf("---\n");}printf("\n");}}return 0;
}
1146: 5004 周易
题目描述
有人说,中国古代的“周易”是二进制系统的起源,在该系统中,他们用“- -”表示1,“---”表示0。因此,二进制数字“011010”可以表述为“---\n- -\n- -\n---\n- -\n---\n”(符号“\n”表示换行)。现在的问题是如何把一个十进制数转换为“周易”中的二进制?
输入
文件中包含多组测试数据。每个测试数据占一行,包括一十进制整数n(0 <= n <= 1000000)和表示二进制位数的k(0 < k <= 20 且 n < 2k)。
n=0,k=0表示输入结束。
输出
对于每组测试数据,输出“周易”中对应的k行二进制数。每组测试数据之间输出一个空行。
样例输入 复制
7 3
0 3
26 6
0 0
样例输出 复制
- -
- -
- ----
---
------
- -
- -
---
- -
---
#include<iostream>
using namespace std;
int main()
{int n;int k;int a[10005];while(scanf("%d%d",&n,&k)!=EOF){int len = 0;if(n==0&&k==0)break;while(n){a[len] = n%2;n/=2;len++;}if(len==k){for(int i =len-1;i>=0;i--){if(a[i]==1)printf("- -\n");elseprintf("---\n");}printf("\n");}if(len<k){for(int j = 0;j<(k-len);j++)printf("---\n");for(int i =len-1;i>=0;i--){if(a[i]==1)printf("- -\n");elseprintf("---\n");}printf("\n");}}return 0;
}