Desafio 1 – Cala boca e come
Enunciado
Resolução
#include <stdio.h> #include <string.h> void resolucao() { int erro = 0, erroMax = 0; char palavraCript[50]; scanf("%s", palavraCript); char teste[strlen(palavraCript)]; scanf("%s", teste); erroMax = 1 + (strlen(palavraCript) - strlen(teste)); // tamanho da escada for (int k = 0; k < erroMax; k++) { for (int i = 0; i < strlen(teste); i++) { if (palavraCript[i + k] == teste[i]) { erro++; break; } } } if (erro == erroMax) printf("Nu\n"); else printf("Oh trem bao ser brasileiro, agora bora comer que o estomago esta " "estalajadando de fome\n"); } int main(void) { int casos_testes; scanf("%d", &casos_testes); while (casos_testes > 0) { resolucao(); casos_testes--; } return 0; }
Desafio 2 – Acarajé
Enunciado
Resolução
#include <stdio.h> #include <stdbool.h> int resultado = 0; char digitos[] = "3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067"; void comparaPi(char *cod) { int seq = 0; int seqSize = -1; int i = 0; int j = 0; while (i < 200) { if (cod[i] == '\0') { if (seq > seqSize) { seqSize = seq; } break; } if (seq == 100) { seqSize = seq; break; } if (cod[i] == digitos[j]) { j++; seq++; } else { j = 0; if (seq > 0) { if (seq > seqSize) { seqSize = seq; } i--; } seq = 0; } i++; } if (seqSize == -1) { resultado = 0; } else { resultado = (digitos[0] - '0') + (digitos[seqSize - 1] - '0'); } } int main() { int n; scanf("%d", &n); for (int i = 0; i < n; i++) { int tempo = 0; char codigo[201]; scanf("%s %d", codigo, &tempo); comparaPi(codigo); if (resultado == tempo) { printf("aqui estao seus acarajes quentinhos\n"); } else if (resultado < tempo) { printf("oh nao os acarajes queimaram\n"); } else { printf("ta mole o.o\n"); } } return 0; }
Desafio 3 – Eu to Saudando a Mandioca
Enunciado
Resolução
#include <stdio.h> #include <stdlib.h> #include <string.h> int ehAnagrama (char* anagrama, char* chave) { int igual = 0; char aux; //para essa funcao iremos colocar as strings em ordem alfabetica e, entao iremos comparar elas for (int i = 0; i < strlen(anagrama) - 1; i++){ for (int j = i+1; j < strlen(anagrama); j++){ if (anagrama[i] > anagrama[j]){ aux = anagrama[i]; anagrama[i] = anagrama[j]; anagrama[j] = aux; } } } for (int i = 0; i < strlen(anagrama); i++){ if (anagrama[i] == chave[i]) igual++; } if (strcmp(chave, "aabcimno") == 0 && igual == 8) return 1; else if (strcmp(chave, "aopt") == 0 && igual == 4) return 1; else return 0; } int main (){ char* anagrama = (char*) malloc (sizeof(char)*80); char* pato = (char*) malloc (sizeof(char)*30); pato = "aopt"; //"pato" com as letras em ordem alfabetica char* manicoba = (char*) malloc (sizeof(char)*30); manicoba = "aabcimno"; //"manicoba" com as letras em ordem alfabetica int qtd, aux; scanf ("%s %d", anagrama, &qtd); while (strcmp(anagrama, "mandioca") != 0){ if (ehAnagrama(anagrama, pato) == 0 && ehAnagrama(anagrama, manicoba) == 0){ printf("nao faco ideia do que ele quer, pode mandar uma batata frita\n"); } else if (ehAnagrama(anagrama, pato) == 1 && ehAnagrama(anagrama, manicoba) == 0){ printf("AOPA, manda %d pato(s) no tucupi que o povo ta com fome\n", qtd); } else if (ehAnagrama(anagrama, pato) == 0 && ehAnagrama(anagrama, manicoba) == 1){ printf("AOPA, manda %d manicoba(s) que o povo ta com fome\n", qtd); } scanf ("%s %d", anagrama, &qtd); } printf("Pedido finalizado\n"); return 0; }
Desafio 4 – MasterPET
Enunciado
Resolução
#include <string.h> #include <stdio.h> int main(){ char expressao[1001]; int N, tam, resposta, cauda; scanf("%d\n", &N); for(int k = 0; k < N; ++k){ scanf("%s", expressao); resposta = 0; cauda = 0; tam = strlen(expressao); for(int i = 0; i < tam; ++i){ if(expressao[i] == 'X'){ ++cauda; }else if(expressao[i] == 'D' && cauda > 0){ --cauda; ++resposta; } } printf("%d\n", resposta); } return 0; }
Desafio 5 – A Vingança do Shaolin
Enunciado
Resolução
#include <stdio.h> #include <stdbool.h> bool scores(int *nums, bool a_turn, int score_a,int score_b, int i,int j) { if(i>j) return score_a>=score_b; if(a_turn) return scores(nums,false,score_a+nums[i],score_b,i+1,j)||scores(nums,false,score_a+nums[j],score_b,i,j-1); return scores(nums,true,score_a,score_b+nums[i],i+1,j)&&scores(nums,true,score_a,score_b+nums[j],i,j-1); } int main(void) { int casos_testes; scanf("%d", &casos_testes); while(casos_testes>0){ int tam; scanf("%d", &tam); int vetor[tam]; for(int i=0;i<tam;i++) scanf("%d", &vetor[i]); if(scores(vetor,true,0,0,0,tam-1)) printf("Chama os bombeiros que o PET tá pegando fogo, bora pra cima porque foguete nao tem re\n"); else printf("Eita, perdi, vou desmaiar, mas ainda tem o PVT no bandeco\n"); casos_testes--; } return 0; }