NYOJ864 统计

原题链接

这个OJ的int不是32位的,所以坑了不少人,换成unsigned long long就行了。

#include <stdio.h>

int main(){
	unsigned long long t, n, a, b, d, i, j, oka;
	scanf("%lld", &t);
	while(t--){
		scanf("%lld", &n);
		oka = b = d = 0;
		a = i = 1;
		for(j = 1; j <= 32; ++j){
			if(n & i){
				if(!oka) oka = 1;
				++d;
				b = 0;
			}else{
				if(!oka) ++a; //c == a - 1;
				++b;
			}
			i <<= 1;
		}
		printf("%lld %lld %lld %lld\n", a, b, a - 1, d);		
	}
	return 0;
}

点击打开链接

posted on 2014-03-08 22:43  长木Qiu  阅读(108)  评论(0编辑  收藏  举报