View Code of Problem 3700

#include<stdio.h>
#include<math.h>
int deTobi(int a,int stack[]){          //十进制转化为二进制数 
    int i=0,r,s;
    do {
        r=a/2;              
        s=a%2;             //取余数 
        stack[i] = s;
        if (r!=0) {        
            ++i;
            a=r;
        } 
    } while (r);            //为0时结束运行
    return i;
}

int main(){
	int n;
	while(scanf("%d",&n)!=EOF&&n!=0){
		int a[20];
		int len=deTobi(n,a);
	    /*for(int i=0;i<len+1;i++)
	   	printf("%d",a[i]);*/
		for(int i=0;i<len+1;i++){
			if(a[i]==1){
			printf("%d\n",(int)pow(2,i));    //pow返回double型 
			break;
		}
	}
   }
}

Double click to view unformatted code.


Back to problem 3700