回复 9楼 『点点滴滴』

我只是试试能不能写出来,还没优化。。
你算法好强,


勤能补拙,熟能生巧!
#include <stdio.h> int main (void) { int n,i,j=0,a[64]; scanf ("%i",&n); //先把输入的数字以二进制的形式存入数组a do { a[i]=n%2; n/=2; i++; }while(n!=0); //遍历数组,找出位等于1的个数 for(i--;i>=0;i--) { if(a[i]==1) { j++; } } //如果二进制位只有一个为1,则是2的N次幂 //否则,就不是。 if(j==1) { printf ("Yes!\n"); }else{ printf ("No!\n"); } //返回OS return 0; }
root@~ #cd prog root@~/prog #cat is2.c #include <stdio.h> int main (void) { int n,i,j=0; scanf ("%i",&n); do { if(n%2==1) { j++; } if(j>1) { printf ("No!\n"); return ; } n/=2; i++; }while(n!=0); printf ("Yes!\n"); return 0; } root@~/prog #