Я делаю эту проблему: http://www.codechef.com/problems/FCTRL У меня есть решение, но использование памяти составляет 1,6 МБ, что, судя по всему, слишком велико. Я не понимаю, как я могу уменьшить это, увидев, что у меня почти нет постоянных данных. Вот мой код:Уменьшение использования памяти, C, CodeChef
#include <stdio.h>
#include <math.h>
int maxPower(long x) {
int i;
for(i = 0; i<= 100; i++) {
long myPower = pow(5,i);
if(myPower > x) {
return (i-1);
}
}
}
int main (void) {
int lines;
scanf("%d", &lines);
int i;
for(i = 0; i<lines; i++) {
long temp;
scanf("%ld", &temp);
int five_counter = 0;
int myPower = maxPower(temp);
int power;
for(power = 1; power<=myPower; power++) {
five_counter += floor(temp/((int)(pow(5,power))));
}
printf("%d\n", five_counter);
five_counter = 0;
}
}
Как вы можете видеть, его написано на C. Любые идеи о том, как уменьшить использование памяти?
Возможно, я ошибаюсь в этом, но разве это имеет значение, если вы перемещаете объявления переменных вне петель? – WildCrustacean
Они попадают в стек, а затем вылетают в начале и в конце каждой итерации. Это может заставить его «выполнять медленнее», но не увеличит или не уменьшит использование памяти. – Marlon
@Marlon: Спасибо, что разъяснил это. – WildCrustacean