Битова маска

Здравейте! Някой има ли идея как би трябвало да се реши следната задача ? 

 

Да се напише функция на С++, която намира всички подмножества на дадено универсално множество, чиито битови маски завършват с въведена от потребителя последователност от 0 и 1. Вход: 2 5 1 6 7 //универсално множество въведено от потребителя 011 //край на битовата маска въведен от потребителя Изход: 00011, 01011, 10011, 11011