1120 - Revisão de Contrato
Um bom exercício para treinar expressões regulares nas linguagens que possuem suporte para tal.
Descrição
Solução
Podemos dividir esse problema em dois passos:
Criar uma nova string com os mesmos caracteres que a string passada, só que sem o caractere ignorado;
Retirar os zeros à frente da string resultante, seja manualmente ou usando a expressão regular
/^(0+)/
, que checa se há um ou mais zeros à frente da string formada.
É muito importante manter a string o tempo todo sem converter para inteiro porque não vai caber.
#include <string.h>
#include <stdio.h>
int main(){
int n, p;
char D, N[101], resposta[101];
while(scanf("%c %s\n", &D, &N) != EOF){
if(D == '0' && !strcmp(N, "0")) break;
p = 0;
n = strlen(N);
memset(resposta, '\0', sizeof(resposta));
for(int i = 0; i < n; ++i){
if(N[i] != D) resposta[p++] = N[i];
}
p = 0;
n = strlen(resposta);
while(p < n){
if(resposta[p] != '0') break;
++p;
}
if(p == n){
printf("0\n");
}else{
strcpy(resposta, resposta + p);
printf("%s\n", resposta);
}
}
return 0;
}
Last updated
Was this helpful?