はむへい’s diary

ねむいです。

AtCoder Beginner Contest 006 C - スフィンクスのなぞなぞ

問題URL

C - スフィンクスのなぞなぞ

解法

大人か老人か赤ちゃんのうちの一つを固定してしまえば、普通の鶴亀算になります。 N \leqq 10^{5}であるので、10^{5}回程度の計算で答えを得ることができます。

ACしたコード

atcoder.jp

#include <bits/stdc++.h>

using namespace std;

int main(){
    int N,M;cin >> N >> M;
    for(int i = 0;i <= N;i++){
        if(i * 2 > M){
            break;
        }
        int remainAsi = M - 2 * i;
        int remainHito = N - i;
        if(remainAsi >= remainHito * 3 && remainHito - (remainAsi - remainHito * 3) >= 0){
            cout<<i<<" "<<remainHito - (remainAsi - remainHito * 3)<<" "<<(remainAsi - remainHito * 3)<<endl;;
            return 0;
        }
    }
    cout<<-1<<" "<<-1<<" "<<-1<<endl;
}