/* P1 * P2 *_* P3 *_*___*_* P4 *_*___*_*_________*_*___*_* P5 *_*___*_*_________*_*___*_*___________________________*_*___*_*_________*_*___*_* */ #include int exponencial(int a, int b) { int i, prod = 1; for (i = 0; i < b; i++) prod *= a; return prod; } void imprimePadrao (int n) { if (n==1) printf("*"); else { int i; imprimePadrao(n-1); for (i = 0; i < exponencial(3, n-2); i++) printf("_"); imprimePadrao(n-1); } } int main() { int i; for (i=1; i<5; i++) { imprimePadrao(i); printf("\n"); } return 0; } #include int exponencial (int a, int b) //O(n-2) { int i, prod = 1; if (b==0) return 1; for (i = 0; i < b; i++) prod *= a; return prod; } int getAst (int n) //O(n-2) { return exponencial(2, n-1); } int getTraco (int n) //O(n) { if (n==1) return 0; if (n==2) return 1; else { int i; return 2*getTraco(n-1) + exponencial(3, n-2); } } int main() { int i; for (i=1; i<20; i++) { if (i==1) printf("Diffe: 1\n"); else if (i==2) printf("Diffe: 1\n"); else printf("Diffe: %d\n", getTraco(i) - getAst(i)); } return 0; } #include int exponencial (int a, int b) //O(n-2) { int i, prod = 1; if (b==0) return 1; for (i = 0; i < b; i++) prod *= a; return prod; } char encontra_iesimo (int n, int i) //O(n) { if (n==1) return '*'; int terco = exponencial(3, n-2); if (i < terco) encontra_iesimo(n-1, i); else if (i > 2*terco-1) encontra_iesimo(n-1, i-2*terco); else return '_'; } int main() { int i; while (scanf("%d", &i)==1) printf("%c", encontra_iesimo(4, i)); return 0; }