Снижение использования памяти, C, CodeChef - PullRequest
1 голос
/ 08 февраля 2011

Я делаю эту проблему: http://www.codechef.com/problems/FCTRL У меня есть решение, но использование памяти составляет 1,6 МБ, что, по-видимому, слишком много. Я не понимаю, как я могу уменьшить это, видя, что у меня почти нет постоянных данных. Вот мой код:

#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. Есть идеи, как уменьшить использование памяти?

Ответы [ 2 ]

0 голосов
/ 12 марта 2011

Это то, что я отправил, и он был принят

#include<stdio.h>
int main()
{
long n,q=0,t,c=1,result,z,m=5;
scanf("%ld",&t);
while(c<=t) 
{ 
scanf("%ld",&n);
z=0;
while(n!=0)
{
q=n / m;
z=z+q;
n=q;
} 
printf("%ld\n",z);
c++;
}
return 0;
}

Основная логика в том, что ни один из нулей в конце факториала не является наибольшей степенью 5, которая делит число.

0 голосов
/ 08 февраля 2011

Сколько из этих 1,6 МБ является общей памятью?Насколько это локально для вашего процесса?Просто запустив процесс, связанный со стандартной библиотекой C, вы будете использовать определенный объем памяти, даже если вся ваша программа:

int main(int argc, char *argv[]) {
    return 0;
}

Где вы видите цифру 1,6 МБ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...