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");
}
}
}