解题思路:
我们可以直接使用c语言的pow函数,它在math.h库里,pow(2,n)表示2的n次方,不过这里给大家介绍更为强大的位运算。
程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。
基本的位运算有:
& 与 两个位都为1时,结果才为1
| 或 两个位都为0时,结果才为0
^ 异或 两个位相同为0,相异为1
~ 取反 0变1,1变0
<< 左移 各二进位全部左移若干位,高位丢弃,低位补0
>> 右移 各二进位全部右移若干位,对无符号数,高位补0
这里主要使用<<运算
a << b就表示把a转为二进制后左移b位(在后面添b个0)。
例如100的二进制为1100100,而110010000转成十进制是400,那么100 << 2 = 400。可以看出,a << b的值实际上就是a乘以2的b次方,因为在二进制数后添一个0就相当于该数乘以2。
通常认为a << 1比a * 2更快,因为前者是更底层一些的操作。因此程序中乘以2的操作请尽量用左移一位来代替。
相同的对于a>>b来说,就是a除以2的b次方。
对于这道题来说,使用位运算简直是再简单不过。
参考代码:
#include <stdio.h> int main () { int n; scanf("%d",&n); printf("%d",(1<<n)%10007); return 0; }
0.0分
169 人评分
高精度加法 (C++代码)(大数加法)浏览:916 |
简单的a+b (C语言代码)浏览:537 |
WU-图形输出 (C++代码)浏览:800 |
wu-淘淘的名单 (C++代码)浏览:1331 |
2006年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:464 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:504 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:667 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:511 |
Tom数 (C语言代码)浏览:552 |
勾股数 (C语言代码)浏览:799 |