AtCoder Anfängerwettbewerb 165 Ein Problem "Wir lieben Golf" Erklärung (Python3, C ++, Java)

Das ist Rute.

AtCoder Beginner Contest 165 A Ich werde das Problem "We Love Golf" erklären.

Problem-URL: https://atcoder.jp/contests/abc165/tasks/abc165_a

Problemzusammenfassung

(Die Problemstellung wird kurz wie folgt ausgedrückt) Bestimmen Sie, ob ein Vielfaches von $ K $ in einer Ganzzahl größer oder gleich $ A $ und kleiner als oder gleich $ B $ vorhanden ist. "OK", wenn es existiert Wenn es nicht existiert, geben Sie "NG" aus.

Zwang

・ Alle Eingänge sind ganze Zahlen ・ $ 1 \ leq A \ leq B \ leq 1000 $ ・ $ 1 \ leq K \ leq 1000 $

Lösung 1 (Schleife)

Die erste Lösung, die für dieses Problem in den Sinn kommt, besteht darin, eine for-Anweisungsschleife </ b> zu verwenden, um herauszufinden, ob der Bereich $ (A, B) $ ein Vielfaches von $ K $ enthält. Ding. Der Berechnungsbetrag beträgt $ O (B) $.

Lösung 2 (finde das maximale Vielfache von K unter B)

Die Problemstellung kann wie folgt umformuliert werden: Ist das maximale Vielfache von $ K $ unter $ B $ größer oder gleich $ A $ </ b>? Daher ist es auch möglich, Wechselstrom durchzuführen, indem bestimmt wird, ob dies durch bedingte Verzweigung erfüllt ist. Da der Berechnungsbetrag nur ein Urteil ist, beträgt er $ O (1) $. Da die Einschränkung jedoch gering ist, besteht keine Notwendigkeit, dies zu tun.

Die Lösung ist für Lösung 1 leichter zu verstehen, daher wird unten ein Beispiel für die Lösung für Lösung 1 gezeigt.

Nachfolgend finden Sie Beispiele für Antworten für Python3, C ++ und Java.

Beispiel für eine Antwort für jede Sprache

Beispiellösung in Python3

{ABC165A.py}


K = int(input())
A,B = map(int,input().split())
flag = 0
#flag ist eine Flag-Funktion(Ob es ein Vielfaches von K gab)
for i in range(A,B+1):
#(A,B)Dann A oder mehr B.-Seien Sie vorsichtig, da Sie bis zu 1 oder weniger prüfen werden! !!
  if i%K == 0:
    flag += 1
    print("OK")
    break
if flag == 0:
  print("NG")
Lösungsbeispiel in C ++

{ABC165A.cpp}


#include<bits/stdc++.h>
using namespace std;
int main(){
  int k,a,b;
  cin >> k;
  cin >> a >> b;
  int flag = 0;
  for (int i = a; i <= b; i++){
    if (i%k==0){
      flag++;
      cout << "OK" << endl;
      break;
    }
  }
  if (flag == 0){
    cout << "NG" << endl;
  }
}
Java-Antwortbeispiel

{ABC165A.java}


import java.util.Scanner;
public class Main{
  public static void main(String[] args){
    Scanner scan = new Scanner(System.in);
    int k = scan.nextInt();
    int a = scan.nextInt();
    int b = scan.nextInt();
    int flag = 0;
    for (int i = a; i <=b; i++){
      if (i%k==0){
        flag++;
        System.out.println("OK");
        break;
      }
    }
    if (flag == 0){
      System.out.println("NG");
    }
  }
}

Recommended Posts