#include"lib.h" int mot[MAX], cl[MAX], up[MAX], p = 1, k; int64_t a, b, cc; FILE *out ; char prog[100]; void aff(int max){ out = fopen(prog, "wt"); fprintf(out, "p=%d a=%lld b=%lld a/b=%.10f\n", p, a, b, 1.0*a/b); fprintf(out, "max=%d cc=%lld\n", max, cc); printf("max=%d cc=%lld\n", max, cc); for(k = 0; k < max; k++) fprintf(out, "%d%s", mot[k], k % 200 == 199 ? "\n" : ""); fclose(out); }//*/ /*void aff(int max){ out = fopen(prog, "wt"); fprintf(out, "p=%d a=%lld b=%lld a/b=%.10f\n", p, a, b, 1.0*a/b); fprintf(out, "max=%d cc=%lld\n", max, cc); printf("max=%d cc=%lld\n", max, cc); for(k = 0; k < max; k++) fprintf(out, "%d%s", mot[k], k % b == b-1 ? "\n" : ""); fclose(out); }//*/ int A(char ent[100]){ int i, nmax, l; printf("p=%d a=%lld b=%lld a/b=%.10f suf:%s ", p, a, b, 1.0*a/b, ent); date(""); for(l = cc = 0; ent[l]; l++) mot[l] = ent[l]-'0'; mot[l] = 1; for(i = 0; i < l; i++) cl[i] = 0; for(; i < MAX; i++) up[i] = (a*(i-l+1)-p)/b; for(i = 0; i < MAX; i++) if(up[i] < 0) {printf("NEGATIF ent=%s i=%d\n", ent, i); break;} for(i = nmax = l; i >= l;) if(!rep(mot, i, 5, 3, 0, 3)){ while(mot[i]) i--; mot[i] = 1; } else{ cl[i] = cl[i-1]+(!mot[i]); if((nmax < i) && (!((++nmax)%10000))) aff(nmax); mot[++i] = (up[i] == cl[i-1]); if(!((++cc)%10000000)) aff(nmax); } printf("%d cc=%lld\n", nmax+1, cc); return nmax+1; } int main(int ac, char **av){ sprintf(prog, "%s.txt", *av); a = 1; b = 2; A("01"); A("11"); A("000"); A("11100"); A("0100"); A("1110"); A("1010"); A("0111100010"); A("0001111000010"); A("0111101000010"); A("1110101000010"); date(""); }