AtCoder Beginner Contest 165 Un problème Explication "We Love Golf" (Python3, C ++, Java)

C'est Rute.

AtCoder Beginner Contest 165 A Je vais vous expliquer le problème "We Love Golf".

URL du problème: https://atcoder.jp/contests/abc165/tasks/abc165_a

Résumé du problème

(L'énoncé du problème est brièvement exprimé comme suit) Détermine s'il existe un multiple de $ K $ dans un entier supérieur ou égal à $ A $ et inférieur ou égal à $ B $. OK '' s'il existe S'il n'existe pas, affichez NG ''.

Contrainte

・ Toutes les entrées sont des entiers ・ $ 1 \ leq A \ leq B \ leq 1000 $ ・ $ 1 \ leq K \ leq 1000 $

Solution 1 (boucle)

La première solution qui vient à l'esprit pour ce problème est d'utiliser une boucle d'instruction for </ b> pour savoir si la plage de $ (A, B) $ contient des multiples de $ K $. Chose. Le montant du calcul sera de O $ (B) $.

Solution 2 (trouver le multiple maximum de K sous B)

L'énoncé du problème peut être reformulé comme suit: Le multiple maximum de $ K $ inférieur à $ B $ est-il supérieur ou égal à $ A $ </ b>? Par conséquent, il est également possible d'effectuer une AC en déterminant si cela est satisfait par un branchement conditionnel. Puisque le montant du calcul n'est que jugement, c'est $ O (1) $, mais comme la contrainte est petite, il n'est pas nécessaire de le faire.

La solution est plus facile à comprendre pour la solution 1, donc un exemple de la solution pour la solution 1 est présenté ci-dessous.

Vous trouverez ci-dessous des exemples de réponses pour Python3, C ++ et Java.

Exemple de réponse pour chaque langue

Exemple de solution en Python3

{ABC165A.py}


K = int(input())
A,B = map(int,input().split())
flag = 0
#flag est une fonction de drapeau(S'il y avait un multiple de K)
for i in range(A,B+1):
#(A,B)Puis A ou plus B-Soyez prudent car vous vérifierez jusqu'à 1 ou moins! !!
  if i%K == 0:
    flag += 1
    print("OK")
    break
if flag == 0:
  print("NG")
Exemple de solution en 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;
  }
}
Exemple de solution en Java

{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