Răspuns :
Prima problema:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int cnt=0,cnt2=0;
for(int i=1;i<=n;++i){
int x;cin>>x;
while(x%5==0)++cnt,x/=5;
while(x%2==0)++cnt2,x/=2;
}
cout<<min(cnt,cnt2)<<'\n';
return 0;
}
Algoritmul se bazeaza pe ideea ca numarul de zerouri de la finalul inmultirii este egal cu numarul de numere egale cu 10 inmultite in numar. Cum 10 se descompune in 2*5 trebuie sa aflam de cate ori se gaseste 2 in factorizare si de cate ori se gaseste 5. Astfel, minimul dintre cele doua valori va fi numarul de 10 din factorizare, respectiv numarul de zerouri de la finalul inmultirii!
Problema 2:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,cnt=0;
cin>>n;
for(int i=1;i<=n;++i){
int x;cin>>x;
x%=10;
cnt+=x;cnt%=10;
}
cout<<cnt<<'\n'
return 0;
}
Algoritmul se bazeaza pe ideea ca trebuie sa mentinem doar ultima cifra a fiecarui numar si mereu sa updatam variabilele in functie de asta!
Sper ca te-am ajutat, Bafta! FORTA HXO!
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, nu ezitați să ne contactați. Ne bucurăm să vă revedem și vă invităm să ne adăugați în lista de favorite!