C'est Rute. Cet article est la suite du commentaire précédent Un problème </ b>!
A | B | C |
---|---|---|
ABC176 A | Cetarticle!!! | ABC176C |
Maintenant, je vais vous expliquer le problème B </ b>.
Déterminez si $ N $ est un multiple de 9 $ $.
・ $ 0 \ leq N \ leq 10 ^ {200000} $ ・ $ N $ est un entier
Veuillez noter que cette fois, la méthode de solution est différente entre Python3, C ++ et Java.
{ABC176B.py}
print("Yes") if int(input())%9 == 0 else print("No")
Faisons attention à cette limitation. ・ $ 0 \ leq N \ leq 10 ^ {200000} $ </ font>
Oui, la plage de $ N $ va jusqu'à 10 $ ^ {200000} $. Puisque $ 10 ^ {64} $ est 1 nombre infini </ b>, $ 10 ^ {200000} $ est un entier extrêmement grand </ b>.
Un tel entier ne peut pas être représenté en C ++ par le type long long int
, sans parler du type ʻint. </ font> (En Java, c'est le type
long`)
Alors tout le monde, vérifions la nature des multiples de 9 $. Tout d'abord, regardez cette vidéo.
La nature des multiples de 9 (source: Trivia Fountain)
La réponse à la multiplication de 9 est toujours 9 lorsque vous additionnez les nombres ensemble </ font>
Cela équivaut à la somme des chiffres est divisible par 9 $ </ b> si elle est un multiple de 9 $. (similaire à cela est indiqué dans l'énoncé du problème) </ font> En d'autres termes, j'ai pu le remplacer par le simple problème de déterminer si la somme des chiffres est divisible par 9 $ </ b>. Il faut temps linéaire pour la longueur de la chaîne </ b> pour trouver la somme des chiffres, mais dans les limites des contraintes, il est temps pour la limite de temps d'exécution.
Voici un exemple de la solution de la solution 2 en 3 langages: Python3, C ++ et 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");
}
}
}
Recommended Posts