Informatică, întrebare adresată de nejneriumihnea, 8 ani în urmă

#cifre15
Am si eu 95 de puncte si as dori solutia de 100 la problema cifre15 de pe pbinfo:
#include

using namespace std;

int main()
{
ifstream f("cifre15.in");
ofstream g("cifre15.out");
int n,i,x,c2=0,c5=0,p=1,minim;
f>>n;
for (i=1;i<=n;i++)
{
f>>x;
while (x%2==0||x%5==0)
{
if (x%2==0) {c2++; x/=2;}
if (x%5==0) {c5++; x/=5;}
}
p=p*x%10;
}
if (c2>c5) {minim=c5; c2=c2-minim; while(c2) {p=p*2%10; c2--;}}
else {minim=c2; c5=c5-minim; while(c5) {p=p*5%10; c5--;}}
g< Imi da gresit ultima cifra aflata la unul din teste

Răspunsuri la întrebare

Răspuns de rossetta
1
#include <iostream>
using namespace std;

int main() {

  long long n, a, nr2 = 0, nr5 = 0, nr, p = 1;
  cin >> n;
  for (int i = 0 ; i < n ; i++) {
    cin >> a;    
      while (a % 2 == 0) {
          a = a / 2;
          nr2++;
      }
      while (a % 5 == 0) {
          a = a / 5;
          nr5++;
      }
      p = p * a;
      p = p % 10;
  }
 
  if(nr2 <= nr5) {
    nr = nr2;
    nr5 = nr5 - nr2;
    for (int i = 0 ; i < nr5; i++) {
      p = p * 5;
      p = p % 10;
    }  
  } else { // if (nr2 > nr5)
    nr = nr5;
    nr2 = nr2 - nr5;
    for (int i = 0 ; i < nr2; i++) {
      p = p * 2;
         p = p % 10;
    }
  }
  cout << nr  << " "<< p ;
  return 0;
}
Alte întrebări interesante