互聯網公司面試題之四

問題:假設給定一個嵌入式設備,它的內存有限,可以利用的內存只有1M(包括代碼段和數據段空間)。你的任務是編寫一個儘可能精簡的程序以最高效的方式實現下面任務:
讀入一個整數N,若N爲非負整數,則計算N到2N之間的整數和;若N爲一個負數,則求2N到N之間的整數和。

答:實現代碼如下:


#include <stdio.h>
n,s,t,i;
int main()
{
for(;~scanf("%d",&n);printf("%d\n",t*s))
for(t=n>0?:-1,i=n=t*n,s=0;i<=2*n;) s+=i++;
return 0;
}



程序分析:C語言的空程序默認情況下使用內存大小爲904kb,上述代碼佔用<200B內存,且完成了相應的任務,符合要求。


優化方案:



#include <stdlib.h>
main(n)
{
for(;~scanf("%d",&n);printf("%d\n",(abs(n)+1)*3*n/2));
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章