Yuki 152 貯金箱の消失 ( Triangle, Math )
No.152 貯金箱の消失 - yukicoder
直角三角形の辺はそれぞれ x * x + y * y, x * x - y * y, 2 * x * y と表せる。
総和をとると、2 * x * x + 2 * x * y ≤ L が問題の核心だと分かる。
ここで x, y を枚挙。
#include <bits/stdc++.h> using namespace std; signed main(){ int L; cin >> L; L /= 4; int ans = 0; for( int i = 2; 2 * i * i <= L; ++i ) for( int j = 1; j < i and 2 * i * j + 2 * i * i <= L; ++j ){ int a = 2 * i * j; int b = i * i - j * j; int c = i * i + j * j; int gab = __gcd( a, b ); int gbc = __gcd( b, c ); int gca = __gcd( c, a ); if( __gcd( gab, __gcd( gbc, gca ) ) > 1 ) continue; ++ans; } cout << ans << endl; return 0; }