Solução: Problema do número binariamente contido (Filipe Teles)

From AdonaiMedrado.Pro.Br
Jump to: navigation, search
#include <stdio.h>
 
int main()
{
	int n, m, k, direita;	
 
	scanf("%d", &n);
	scanf("%d", &m);
	scanf("%d", &k);
 
	//((1 << k) -1) == k bits à direita com 1
	direita = ((1 << k) -1) & m;
	while (n)
	{
		if ( ((direita & n) == m ) && (m == (((1 << k) -1) & n)) )
		{
			printf("1\n");
			return 1;
		}
		else
			n = n >> 1;
	}
 
	printf("0\n");
 
}