C语言编程猜数字

有如下一组数字,其中每个数字都在 1 ~ 63 之间,

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63

2 3 6 7 10 11 14 15 18 19 22 23 26 27 30 31 34 35 38 39 42 43 46 47 50 51 54 55 58 59 62 63

4 5 6 7 12 13 14 15 20 21 22 23 28 29 30 31 36 37 38 39 44 45 46 47 52 53 54 55 60 61 62 63

8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31 40 41 42 43 44 45 46 47 56 57 58 59 60 61 62 63

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

现在需要编写一个程序,当从键盘输入某数字在且仅在哪几行出现了,该程序可以“猜”出这个数字是几。

输入
程序的输入是一串以空白符分开的数字,当输入 0 时表示输入结束。
输出
输出猜到的数字。

这个程序我找到了答案,但是是据说用二进制,是怎么看的?下面是那个程序
#include<stdio.h>
#include <math.h>
int main(){
int n,m=0;
scanf("%d",&n);
while(n!=0)
{
m+=(int)pow(2,n-1);
scanf("%d",&n);
}
printf("%d\n",m);
return 0;
}

数据的规律是按照二进制的方式
比如1 是00001,所以1就只在第一行出现了
比如3 是00011 所以3就只在第一行第二行出现
比如63是11111 所以每一行都有63
再比如15 是01111 所以前四行都有15
所以最终的值就是2的n-1相加(即2进制所表示的十进制数)
比如第1行 第2行 第3行,那么最终的值就是 2的0次方+2的1次方+2的2次方即7
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-04-14
难道是应为2的n-1次方。。
相似回答