注册 登录
编程论坛 C语言论坛

x是不是2的次方或x是否是1024的倍数怎么求?

AbduRahman1 发布于 2021-12-19 19:59, 1411 次点击
Description
        乔治·斯蒂比兹(George Stibitz ,1904-1995)被称为数字计算机之父,几乎在相同时期,他与德国工程师楚泽分别独立研制出了二进制数字计算机。

        所以对于程序员来说2和1024是两个特殊的数字,现在给你一个数,问你它是否是2的n次方(n可取0和任何正整数)或它是否是1024的倍数。

Input

        多组输入,每行读一个正整数x(1<=x<=40000)。

Output
        如果n满足题目里的任意一个条件,则输出“YES”,否则输出“NO”,行末无多余空格,并需要换行。

Samples
input
1
2
3
4
5
1024
2048
3072
output
YES
YES
NO
YES
NO
YES
YES
YES
2 回复
#2
rjsp2021-12-20 09:22
程序代码:
#include <stdio.h>

int main( void )
{
    for( unsigned x; scanf("%u",&x)==1; )
        puts( (x&(x-1))==0 || (x&0x3ff)==0 ? "YES" : "NO" );
}
#3
AbduRahman12021-12-22 19:15
回复 2楼 rjsp
感谢大佬
1