Помощ за една програма на C++
Публикувана на: 11.03.2010, от
imho
Става дума за задача "Нули" от Арена 2 , бронзовата дивизия, http://cs.maycamp.com .
Програмата трябва да намери по число N<50000 броя на нулите, с които завършва произведението на числата от 1 до N и последната му ненулева цифра.
Например за N=12 произведението е 479001600, има две завършващи нули и последната ненулева цифра е 6.
Ето моментното ми решение.
#include<iostream>
using namespace std;
int main() {
int n, i, t, c2, c5, p;
c2 = 0;
c5 = 0;
p = 1;
cin >> n;
for (i = 2; i <= n; i++) {
t = i;
while (!(t % 5)) {
t /= 5;
c5++;
}
while (!(t % 2)) {
t /= 2;
c2++;
}
p *= t;
p %= 10;
}
for (i=0;i<c2-c5;i++){
p*=2;
p%=10;
}
cout << p << ' ' << c5 << endl;
}
Предложете нещо по-оптимизирано..