Răspuns :
Cerința
Valentin, elev în clasa a V-a, e fascinat de cifre. Îi place să mute cifrele unui număr de pe o poziție pe alta. Astfel, pentru un număr N și o cifră k, mută toate cifrele egale cu k la început, după care așază celelalte cifre în ordinea în care apăreau în N. Desigur, există și situații în care numărul cifrelor lui N se micșorează sau situații în care numărul N nu se modifică.
De exemplu, dacă numărul N este 134112 și cifra k este 1, după mutarea cifrelor se obține 111342.
Pornind de la numărul N și cifra k știți ce număr obține Valentin?
Scrieţi un program care să citească numărul natural N şi cifra k și care să determine:
a) de câte ori apare cifra k în numărul N; (30% din punctaj)
b) numărul obținut după modificarea numărului N; (70% din punctaj)
Solutie:
#include <fstream>
using namespace std;
ifstream fin ("cifre006.in");
ofstream fout("cifre006.out");
int main(){
long long n, x = 0, p = 1, y = 0, z;
int nr = 0, k, a = 0;
fin >> n >> k;
while (n > 0){
if (n%10 == k)
a++, x = x*10+k;
else
nr++, y += n%10*p, p *= 10;
n /= 10;
}
p = 1;
while (nr){
p *= 10;
nr--;
}
x *= p;
z = x + y;
fout << a << '\n' << z;
fin.close();
fout.close();
return 0;
}
#include <fstream>
using namespace std;
ifstream fin("cifre006.in");
ofstream fout("cifre006.out");
int N, k, cif, ap, p = 1, N1, N2;
int main()
{
fin >> N >> k;
while(N)
{
cif = N % 10;
if(cif == k)
{
ap++;
N1 = N1 * 10 + cif;
}
else
{
N2 = N2 + cif * p;
p = p * 10;
}
N = N / 10;
}
fout << ap << '\n' <<N1*p+N2;
return 0;
}
Vă mulțumim că ați ales să vizitați site-ul nostru dedicat Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți alte întrebări sau aveți nevoie de asistență suplimentară, nu ezitați să ne contactați. Vă așteptăm cu drag să reveniți și nu uitați să ne salvați în lista de favorite!