//pku3652 Persistent Bits #include <cstdio> typedef long INT32; typedef unsigned long UINT32; typedef unsigned short UINT16; const UINT16 usF16 = 0xffff; int main() { INT32 iA, iB, iC, iS; INT32 i; while (4 == scanf("%ld %ld %ld %ld", &iA, &iB, &iC, &iS)) { UINT16 usMark = 0; INT32 iX = iS; for (i=1; i<iC; i++) { iX = (iA * iX + iB) % iC; usMark |= (iS ^ iX) & usF16; } UINT16 iInd = 0x8000; for (i=0; i<16; i++) { if (usMark & iInd) printf("?"); else { if (iS & iInd) printf("1"); else printf("0"); } iInd = iInd >> 1; } printf("/n"); } return 0; }