変数を一つだけ使って1~100まで足す
「1から100までの和を表示するプログラムを作れ」という問題を鼻で笑う諸君、「但し変数は宣言済の int x 以外は使わないこと」 という条件を付けても鼻で笑っていられるかな?— 自作中毒ぢぢぃ、GATAROさん (@duo6750) 3月 25, 2012
というのを見かけたのでintを16bitと8bitに区切って使って計算してみた。
using System;
publicclass Program
{
publicstaticvoid Main()
{
//0xFFFF00(5050) + 0xFF(100)int x = 100;
for (; (x & 0xFF) > 0; x= x & 0xFFFF00 | ((x & 0xFF) -1))
{
x = ((x >> 8) + (x & 0xFF)) << 8 | (x & 0xFF);
}
Console.WriteLine(x>>8);
}
}実行結果はこちら/ideone.com