AtCoder Beginner Contest 170 B Ich werde das Problem "Crane and Turtle" erklären.
Problem-URL: https://atcoder.jp/contests/abc170/tasks/abc170_b
Es gibt einige Tiere im Garten. Als Information ・ Gesamtzahl der Tiere im Garten $ X $, ・ Gesamtzahl der Beine $ Y $ Ist gegeben. Die Anzahl der Kranschenkel beträgt $ 2 $ und die Anzahl der Schildkrötenbeine beträgt $ 4 $.
Stellen Sie fest, ob es eine Kombination aus Kran- und Schildkrötennummern gibt, die den Informationen $ X $, $ Y $ entspricht. Ausgabe: -Ausgabe vorhandener "Ja" -Ausgabe als "Nein", die nicht existiert
・ $ 1 \ leq X \ leq 100 $ ・ $ 1 \ leq Y \ leq 100 $ ・ Alle Eingabewerte sind Ganzzahlen
Glücklicherweise sind die Einschränkungen für $ X $ und $ Y $ gering, sodass Sie Folgendes tun können.
・ Geben Sie $ X, Y $ ein
Ein Beispiel für die Antwort in Python 3 lautet wie folgt. (C ++ und Java können mit derselben Lösung gelöst werden)
{B.py}
x,y = map(int,input().split())
flag = 0
for i in range(x+1):
if (y - 2*i)%4 == 0 and (y - 2 * i)//4 == x - i:
flag += 1
print("Yes")
break
if flag == 0:
print("No")
Wenn die Anzahl der Kraniche $ a $ und die Anzahl der Schildkröten $ b $ beträgt, gelten die folgenden simultanen Gleichungen.
\begin{cases}
a+b = X \\
2a+4b = Y
\end{cases}
Wenn Sie das lösen
\begin{cases}
a = \frac{4x-Y}{2} \\
b = \frac{-2x+Y}{2} \\
\end{cases}
Sie können zwei Lösungen erhalten. Sie müssen nur feststellen, ob beide ganzzahlige Lösungen und größer als 0 sind. </ b> (Da die Einschränkung gering ist, ist diesmal Lösung 1 Aber ich kann es mir leisten, das Ausführungszeitlimit einzuhalten) </ font>
{B2.Py}
x,y = map(int,input().split())
a = (4*x-y)/2
b = (-2*x+y)/2
if a%1 == 0 and 0 <= a and b%1 == 0 and 0 <=b:
print("Yes")
else:
print("No")
Im Allgemeinen wird es häufig von Lösung 1 anstelle von Lösung 2 gelöst. Hier sind einige Beispiele für C ++ - und Java-Lösungen, die von Lösung 1 gelöst werden.
{B1.cpp}
#include<bits/stdc++.h>
using namespace std;
int main(){
int x,y;
cin >> x >> y;
int flag = 0;
for (int i = 0; i <= x; i++){
if ((y-2*i)%4 == 0 && (y - 2 * i)/4 == x-i){
flag++;
cout << "Yes" << endl;
break;
}
}
if (flag == 0){
cout << "No" << endl;
}
}
{B1.cpp}
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int x = scan.nextInt();
int y = scan.nextInt();
int flag = 0;
for (int i = 0; i <= x; i++){
if ((y-2*i)%4 == 0 && (y - 2 * i)/4 == x-i){
flag++;
System.out.println("Yes");
break;
}
}
if (flag == 0){
System.out.println("No");
}
}
}