インターネット会社の面接問題の4


問題:組み込みデバイスが与えられたと仮定すると、メモリは限られており、利用可能なメモリは1 M(コードセグメントとデータセグメント空間を含む)しかありません.あなたのタスクは、できるだけ簡素なプログラムを作成して、次のタスクを最も効率的に実現することです.
1つの整数Nを読み込んで、Nが非負の整数であれば、Nから2 Nの間の整数和を計算する.Nが負の数であれば、2 NからNの間の整数和を求める.
A:実装コードは以下の通りです.

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

プログラム分析:C言語の空のプログラムはデフォルトで904 kbのメモリサイズを使用し、上記のコードは<200 Bのメモリを占有し、対応するタスクを完了し、要求に合致しています.
最適化シナリオ:


#include <stdlib.h>
main(n)
{
   for(;~scanf("%d",&n);printf("%d
",(abs(n)+1)*3*n/2)); }