Das ist Rute. Dieser Artikel ist eine Fortsetzung des vorherigen Ein Problem </ b> -Kommentars!
| A | B | C | 
|---|---|---|
| ABC176 A | DieserBeitrag!!! | ABC176C | 
Jetzt werde ich das B-Problem </ b> erklären.
Bestimmen Sie, ob $ N $ ein Vielfaches von $ 9 $ ist.
・ $ 0 \ leq N \ leq 10 ^ {200000} $ ・ $ N $ ist eine ganze Zahl
Bitte beachten Sie, dass sich die Lösungsmethode diesmal zwischen Python3, C ++ und Java unterscheidet.
int </ b> dargestellt werden können. Sie können also AC schreiben, indem Sie den folgenden bedingten Zweig schreiben!
 (Genau genommen kann es Ganzzahlen mit mehreren Längen verarbeiten) </ font>{ABC176B.py}
print("Yes") if int(input())%9 == 0 else print("No")
Achten wir auf diese Einschränkung. ・ $ 0 \ leq N \ leq 10 ^ {200000} $ </ font>
Ja, der Bereich von $ N $ beträgt bis zu $ 10 ^ {200000} $. Da $ 10 ^ {64} $ 1 unendliche Zahl </ b> ist, ist $ 10 ^ {200000} $ eine enorm große ganze Zahl </ b>.
In C ++ kann eine solche Ganzzahl nicht durch den Typ  int oder sogar den Typ long long int dargestellt werden. </ font>
(In Java ist dies der "lange" Typ)
Lassen Sie uns also die Art der Vielfachen von 9 $ überprüfen. Schauen Sie sich zunächst dieses Video an.
Die Art der Vielfachen von 9 (Quelle: Trivia Fountain)
Die Antwort auf das Multiplizieren von 9 lautet immer 9, wenn Sie die Zahlen addieren </ font>
Dies entspricht . Die Summe der Ziffern ist durch $ 9 $ </ b> teilbar, wenn es sich um ein Vielfaches von $ 9 $ handelt. (Ähnlich wie in der Problemstellung angegeben) </ font> Mit anderen Worten, ich konnte es durch das einfache Problem ersetzen, festzustellen, ob die Summe der Ziffern durch $ 9 $ </ b> teilbar ist. Es dauert lineare Zeit für die Länge der Zeichenfolge </ b>, um die Summe der Ziffern zu finden, aber innerhalb der Einschränkungen ist es Zeit für das Ausführungszeitlimit.
Das folgende Beispiel zeigt die Lösung in Lösung 2 in drei Sprachen: Python3, C ++ und Java.
{ABC176B2.py}
N = input()
ans = 0
for i in range(len(N)):
  ans += N[i]
print("Yes") if ans%9 == 0 else print("No")
{ABC176B2.cpp}
#include<bits/stdc++.h>
using namespace std;
int main(){
  string s;
  cin >> s;
  int ans = 0;
  for (int i = 0; i < s.size(); i++){
    ans = ans +  int(s.at(i))-48;
  }
  if (ans%9==0){
    cout << "Yes" << endl;
  }else{
    cout << "No" << endl;
  }
}
{ABC176B2.java}
import java.util.Scanner;
public class Main{
  public static void main(String[] args){
    Scanner scan = new Scanner(System.in);
    String S = scan.next();
    int ans = 0;
    for (int i = S.length(); i > 0 ; i--){
      ans = ans + Integer.parseInt(S.substring(i-1,i));
    }
    if (ans % 9 == 0){
      System.out.println("Yes");
    }else{
      System.out.println("No");
    }
  }
}