はまやんはまやんはまやん

hamayanhamayan's blog

4/N [Tenka1 Programmer Contest C]

http://tenka1-2017.contest.atcoder.jp/tasks/tenka1_2017_c

解法

http://tenka1-2017.contest.atcoder.jp/submissions/1637159

h,n,w<=3500なので、このうち、h,nの組み合わせを全探索して考える。
h,nを固定すると、式を変形することでwを導くことができる。
w = (4kn-Nn-Nh) / (Nhn)
あとはwが[1,3500]の範囲にあって整数であれば答え。

typedef long long ll;
ll N;
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> N;
 
    rep(h, 1, 3501) rep(n, 1, 3501) {
        // 4/N = 1/h + 1/n + 1/w
        
        ll up = N * h * n;
        ll dow = 4LL * h * n - N * n - N * h;
        if (dow == 0) continue;
        if (up % dow != 0) continue;
        ll w = up / dow;
        if (0 < w && w <= 3500) {
            printf("%d %d %lld\n", h, n, w);
            return;
        }
    }
}