Este urgent. Pentru informatica. Dau coroana. Va rog ajtor!
Se dau doua numere : n si k Se efectueaza urmatoare operatii :
1. Se calculeaza numarul Fact = n!
2. Se elimina toate zerourile de la sfarsitul numarului Fact ( ex : daca Fact = 12200320000 atunci Fact devine 1220032 ).
3. Se calculeaza rasturnatul numarului Fact
4. Se afiseaza a k-a cifra a lui Fact
Date de intrare
In fişierul de intrare kfact.in se gasesc cele doua numere n si k pe un singur rand separate printr-un spatiu.
Date de ieşire
În fişierul de ieşire kfact.out se va afisa cifra obtinuta in urma executarii operatiilor de mai sus.
Restricţii
1 ≤ k ≤ 9 1 ≤ n ≤ 1 000 000 daca cifra ceruta nu exista ( ex : Fact = 21 si k = 6 ) se va afisa -1
Exemplu
kfact.in 5 2
kfact.out 1
Explicaţie 1. Fact = 5! = 1 * 2 * 3 * 4 * 5 = 120. 2. Dupa elminarea zerourilor de la sfarsit Fact = 12. 3. Rasturnatul lui Fact = 21. 4. Afisam ce-a de-a 2-a cifra a numarului Fact care este 1.
Răspunsuri la întrebare
Răspuns de
2
Răspuns:
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;
ifstream fin ("kfact.in");
ofstream fout ("kfact.out");
int main()
{
long int n,k,Fact=1,rast=0,C=0,x;
fin>>n;
fin>>k;
for (int i=2;i<=n;i++)
{
Fact=Fact*i;
}
while (Fact%10==0)
{
Fact=Fact/10;
}
while (Fact!=0)
{
rast=rast*10+Fact%10;
Fact=Fact/10;
}
Fact=rast;
while (rast!=0)
{
C++;
rast=rast/10;
}
x=Fact/pow(10,C-k);
fout<<x%10;
fin.close();
fout.close();
return 0;
}
ovdumi:
daca ai nelamuriri nu ezita sa mi le comunici
Alte întrebări interesante
Limba română,
8 ani în urmă
Engleza,
8 ani în urmă
Limba română,
8 ani în urmă
Chimie,
8 ani în urmă
Matematică,
9 ani în urmă
Fizică,
9 ani în urmă