06/11/12 20:36:48
おっ、やっと荒らし規制明けた。
まぁ、私が扱ってたのは2バイト整数とその派生の固定小数点数だから。
>>92
今更ソースはないし、説明も面倒なんでCで書いてみた。
int main(int argc, char ** argv)
{
int x = atoi(argv[1]);
int xn;
int r;
for (r = 1, xn = x; xn > 0; r += 2) {
xn -= r;
}
r >>= 1;
if (xn < 0) {// 切り上げなら不要
if (r * r - r >= x) --r;// 切り捨てなら不要
}
printf("%d:%d\n", x, r);
return 0;
}
四捨五入しなくていいなら掛け算も使わないのが味噌屋根。