Problema: 1120
Enunciado:
Durante anos, todos os contratos da Associação de Contratos da Modernolândia (ACM) foram datilografados em uma velha máquina de datilografia. Recentemente Sr. Miranda, um dos contadores da ACM, percebeu que a máquina apresentava falha em um, e apenas um, dos dígitos numéricos. Mais especificamente, o dígito falho, quando datilografado, não é impresso na folha, como se a tecla correspondente não tivesse sido pressionada. Ele percebeu que isso poderia ter alterado os valores numéricos representados nos contratos e, preocupado com a contabilidade, quer saber, a partir dos valores originais negociados nos contratos, que ele mantinha em anotações manuscritas, quais os valores de fato representados nos contratos. Por exemplo, se a máquina apresenta falha no dígito 5, o valor 1500 seria datilografado no contrato como 100, pois o 5 não seria impresso. Note que o Sr. Miranda quer saber o valor numérico representado no contrato, ou seja, nessa mesma máquina, o número 5000 corresponde ao valor numérico 0, e não 000 (como ele de fato aparece impresso).
Linguagem: C++
É verificado digito por digito para montar a string final. Além disso, é feita uma verificação se o primeiro digito da string final seria 0, neste caso ele não deve ser impresso.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include <iostream> using namespace std; int main() { char digito; string teste; cin >> digito >> teste; while(digito!='0' and teste[0]!='0'){ string final = ""; bool first = true; for(int i=0;i<teste.length();i++){ if(digito!=teste[i]){ if(!first or teste[i]!='0'){ final += teste[i]; first = false; } } } if(first) cout << 0 << endl; else cout << final << endl; cin >> digito >> teste; } return 0; } |
Nenhum comentário:
Postar um comentário