题目描述
啄木鸟现在正在思考一个问题:对于给定的一个十进制数M,要求将其转换成N位二进制,然后再将得到的N位二进制数倒过来得到一个十进制表示的新数P,例如: 对于一个十进制数5,将其转换成6位二进制数,我们得到:000101,再将其倒换过来为:101000,其对应的十进制数为:40 啄木鸟其实是只比较笨的鸟,它肯定不能解决这个比较高深的程序问题,现在它向作为程序高手的你求救,你能帮助它吗?
输入
数据有多组, 每组数据输入M,N的值(1< =M< =1000,10< =N< =20)输出
如上要求输出,输出一组数据后,换行输出另一组。样例输入
100 20 3 10样例输出
155648 768#include<stdio.h> #include<math.h> int main() { int n,m; while (scanf("%d%d", &n, &m) != EOF) { int a[100]; int b[100]; int i = 0; int count = 0; for (i = 0; i < m; i++) { a[i] = n % 2; n = n / 2; } for (i = m - 1; i >= 0; i--) { count += a[i] * (pow(2, m - 1 - i)); } printf("%d\n", count); } return 0; }
SWUST OJ209: 二进制问题
最新推荐文章于 2024-05-19 17:14:16 发布