Grade 9 · Digits of a numberCitește în română
Replacing one digit with another
Original: Înlocuirea unei cifre cu alta
O(n)C++1737 lines1 example
The idea
Replaces every occurrence of digit x in n with digit y. We rebuild the number from right to left with rez = rez + digit * p, putting y in place of every digit equal to x.
Original description (Romanian)
Înlocuiește în n fiecare apariție a cifrei x cu cifra y. Reconstruim numărul de la dreapta la stânga cu rez = rez + cifra * p, punând y în locul fiecărei cifre egale cu x.
- Complexity
- O(k), where k is the number of digits of n
- Grade
- Grade 9 (Clasa a IX-a)
- Chapter
- Digits of a number
Examples
Example 1
Input
2721 2 5
Expected output
5751
The code
Comments are in Romanian, as in the original collection. Edit freely: you can reset at any time.
/*
* Titlu: Înlocuirea unei cifre cu alta
* Clasa: 9
* Capitol: Cifrele unui număr
* Descriere: Înlocuiește în n fiecare apariție a cifrei x cu cifra y.
* Reconstruim numărul de la dreapta la stânga cu rez = rez + cifra * p,
* punând y în locul fiecărei cifre egale cu x.
* Complexitate: O(k), unde k este numărul de cifre ale lui n
*
* Exemplu
* Intrare: 2721 2 5
* Ieșire: 5751
*/
#include <iostream>
using namespace std;
int main()
{
long long n, rez = 0, p = 1;
int x, y;
cin >> n >> x >> y;
do
{
int cifra = n % 10;
if (cifra == x)
{
cifra = y;
}
rez = rez + cifra * p;
p = p * 10;
n = n / 10;
}
while (n > 0);
cout << rez << '\n';
return 0;
}
Runs on a real g++ (C++17, -O2) through Compiler Explorer. Keep runs short; there's a time limit.