我在做這個問題:http://www.codechef.com/problems/FCTRL 我有解決方案,但是,內存使用情況出現爲1.6 MB,顯然,這太多了。我不明白如何減少這種情況,因爲我幾乎沒有持久數據。這是我的代碼:減少內存使用量,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 2011-02-08 02:12:51
他們被推入堆棧,然後在每次迭代的開始和結束時彈出。這可能會使其「執行較慢」,但不會增加或減少內存使用量。 – Marlon 2011-02-08 02:14:54