UVa11461 Square Numbers
問題
http://uva.onlinejudge.org/external/114/11461.html
2つの正の整数a, b(a, bを含む)の間に含まれる2乗の数を答えよ。
解法
整数の間をループで回して調べても良いが、もっとうまい方法がある。
a-1, b それぞれのルート取って切り捨てて差分を取れば良い。(人が書いてたコード見て知った)
#include <iostream> #include <math.h> int main() { while(1) { int a, b; std::cin >> a >> b; if((a|b) == 0) break; std::cout << int(sqrt(b)) - int(sqrt(a-1)) << std::endl; } return 0; }