Lösen mit Ruby und Python AtCoder ARC067 C Primfaktorisierung

Einführung

Dieses Thema

AtCoder Regular Contest C - Factors of Factorial Difficulty: 925

Dieses Thema, Primfaktor-Zerlegung

Probleme wie eine vereinfachte Version des zuvor gelösten * AtCoder ABC057 C-Primfaktorisierungsbit-Exploration in Ruby und Python *.

Obwohl es als Bodenbelag bezeichnet wird, ist im "C-Sprachsystem" ein ganzzahliger Überlauf sichtbar, wenn Sie tatsächlich Bodenbeläge verwenden, sodass dieser Punkt möglicherweise ** Schwierigkeitsgrad ** höher ist. Ruby

ruby.rb


require 'prime'

n = gets.to_i
if n == 1
  puts '1'
  exit
end
M = 10 ** 9 + 7
h = Hash.new(0)
1.upto(n) do |i|
  i.prime_division.each do |k, v|
    h[k] += v
  end
end
puts h.values.map{|i| (i + 1)}.inject{|u, v| u * v % M}

prime.rb


1.upto(n) do |i|
  i.prime_division.each do |k, v|
    h[k] += v
  end
end

Es ist keine tatsächliche Skalierungsberechnung erforderlich, und die Zahlen in der Folge der zu skalierenden Zahlen werden faktorisiert und in den Hash eingefügt. ** Ergänzung ** Ich habe einen Kommentar erhalten und ihn korrigiert.

perm.rb


puts h.values.map{|i| (i + 1)}.inject{|u, v| u * v % M}

Da es Fälle gibt, in denen eine bestimmte Primzahl nicht ausgewählt ist (Null ist ausgewählt), wird "(i + 1)" verwendet, um die Anzahl der Kombinationen zu erhalten.

Ruby beiseite

Die Potenz des Maximalwerts "1000" von "1 ≤ N ≤ 1000" ist übrigens ein numerischer Wert von "2568 Stellen".

402387260077093773543702433923003985719374864210714632543799910429938512398629020592044208486969404800479988610197196058631666872994808558901323829669944590997424504087073759918823627727188732519779505950995276120874975462497043601418278094646496291056393887437886487337119181045825783647849977012476632889835955735432513185323958463075557409114262417474349347553428646576611667797396668820291207379143853719588249808126867838374559731746136085379534524221586593201928090878297308431392844403281231558611036976801357304216168747609675871348312025478589320767169132448426236131412508780208000261683151027341827977704784635868170164365024153691398281264810213092761244896359928705114964975419909342221566832572080821333186116811553615836546984046708975602900950537616475847728421889679646244945160765353408198901385442487984959953319101723355556602139450399736280750137837615307127761926849034352625200015888535147331611702103968175921510907788019393178114194545257223865541461062892187960223838971476088506276862967146674697562911234082439208160153780889893964518263243671616762179168909779911903754031274622289988005195444414282012187361745992642956581746628302955570299024324153181617210465832036786906117260158783520751516284225540265170483304226143974286933061690897968482590125458327168226458066526769958652682272807075781391858178889652208164348344825993266043367660176999612831860788386150279465955131156552036093988180612138558600301435694527224206344631797460594682573103790084024432438465657245014402821885252470935190620929023136493273497565513958720559654228749774011413346962715422845862377387538230483865688976461927383814900140767310446640259899490222221765904339901886018566526485061799702356193897017860040811889729918311021171229845901641921068884387121855646124960798722908519296819372388642614839657382291123125024186649353143970137428531926649875337218940694281434118520158014123344828015051399694290153483077644569099073152433278288269864602789864321139083506217095002597389863554277196742822248757586765752344220207573630569498825087968928162753848863396909959826280956121450994871701244516461260379029309120889086942028510640182154399457156805941872748998094254742173582401063677404595741785160829230135358081840096996372524230560855903700624271243416909004153690105933983835777939410970027753472000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Selbst wenn diese Zahl direkt "Prime.prime_division (1000!)" Ist, wird sie normal berücksichtigt, was zu "AC" führt. Nur ein bisschen ! Ich habe es getan. Python

python.py


from math import sqrt
from collections import defaultdict

n = int(input())
h = defaultdict(int)
def factorization(arg):
    while arg % 2 == 0:
        h[2] += 1
        arg //= 2
    for i in range(3, int(sqrt(arg)) + 1, 2):
        while arg % i == 0:
            h[i] += 1
            arg //= i
    if arg > 1:
        h[arg] += 1
if n == 1:
    print(1)
else:
    m = 10 ** 9 + 7
    for i in range(1, n + 1):
        factorization(i)
    cnt = 1
    for key, v in h.items():
        cnt *= (v + 1)
        cnt %= m
    print(cnt)

Ich füge "defaultdict" mit meiner eigenen "Faktorisierungsfunktion" eine Primzahl hinzu.

Ruby Python
Codelänge(Byte) 239 603
Ausführungszeit(ms) 15 23
Erinnerung(KB) 2300 3316

Zusammenfassung

Recommended Posts

Lösen mit Ruby und Python AtCoder ARC067 C Primfaktorisierung
Lösen mit Ruby und Python AtCoder ABC057 C Zerlegung des Primfaktors Bit vollständige Suche
Lösen mit Ruby, Perl, Java und Python AtCoder CADDi 2018 C Primfaktorisierung
Lösen mit Ruby und Python AtCoder ARC 059 C Minimum-Quadrat-Methode
Lösen mit Ruby, Perl, Java und Python AtCoder ARC 098 C Kumulative Summe
Lösen mit Ruby und Python AtCoder ABC011 C Dynamische Planungsmethode
Lösen mit Ruby, Perl, Java und Python AtCoder ABC 065 C-te Potenz
C-Sprache, Java, Python-Benchmarks mit Primfaktorisierung
Lösen mit Ruby und Python AtCoder CODE FESTIVAL 2016 qual C B Priority Queue
Lösen mit Ruby, Perl, Java und Python AtCoder ARC 066 C Iterativer Square Hash
Lösen mit Ruby und Python AtCoder ABC178 D Dynamische Planungsmethode
Lösen mit Ruby und Python AtCoder ABC151 D Suche nach Breitenpriorität
Lösen mit Ruby und Python AtCoder AISING2020 D Iterative Square-Methode
Lösen mit Ruby, Perl, Java und Python AtCoder ATC 002 A.
Lösen mit Ruby und Python AtCoder ABC153 E Dynamische Planungsmethode
Lösen mit Ruby, Perl, Java und Python AtCoder ATC 002 B.
Lösen mit Ruby und Python AtCoder ABC138 D Benachbarte Liste
Lösen mit Ruby, Perl, Java und Python AtCoder diverta 2019 Programmierwettbewerb C String Manipulation
Lösen mit Ruby, Python und numpy AtCoder ABC054 B Matrixberechnung
Lösen mit Ruby, Python und networkx AtCoder ABC168 D Benachbarte Liste
AtCoder ABC110 C-String-Manipulation zum Lösen in Ruby
Lösen mit Ruby, Perl, Java und Python AtCoder ABC 107 B String-Manipulation
AtCoder ABC 165 D Bodenfunktion in Ruby, Perl, Java und Python gelöst
Lösen mit Ruby, Perl, Java und Python AtCoder ABC 131 D Sortieren von Arrays
Lösen mit Ruby, Perl, Java und Python AtCoder ABC 047 C Regulärer Ausdruck
AtCoder ARC080 D Simulation mit Ruby und Python gelöst
Lösen mit Ruby, Perl, Java und Python AtCoder ARC 086 C Hash-Sortierung
Lösen mit Ruby und Python AtCoder ABC084 D Kumulative Summe der Primzahlen
Scraping mit Node, Ruby und Python
AtCoder ABC 114 C-755 mit Python3 gelöst
Mit Ruby (Rails) verschlüsseln und mit Python entschlüsseln
Einfaches Web-Scraping mit Python und Ruby
RaspberryPi L Chika mit Python und C #
Lösen mit Ruby und Python AtCoder ABC172 C Kumulative Summen-Dichotomie
Fordern Sie AtCoder (ABC) 164 mit Python heraus! A ~ C Problem
Löse AtCoder 167 mit Python
Ruby, Python und Map
Python und Ruby teilen sich
Vergleich von CoffeeScript mit JavaScript-, Python- und Ruby-Grammatik
Versionsverwaltung von Node, Ruby und Python mit anyenv
Programmieren mit Python und Tkinter
Ver- und Entschlüsselung mit Python
[Python 3] Primfaktor-Zerlegung in 14 Zeilen
Löse AtCoder ABC166 mit Python
Hellblau mit AtCoder @Python
[AtCoder Erklärung] Kontrollieren Sie ABC180 A, B, C Probleme mit Python!
Python und Hardware-Verwenden von RS232C mit Python-
Mandelbrot-Benchmark (C, PHP, HHVM, Ruby, Python, PyPy und Kinx)
Python auf Ruby und wütend Ruby auf Python
Mathematik mit Python lösen (unvollständig)
Python und Ruby Slice Memo
Beurteilung von Primzahlen mit Python
Zundokokiyoshi mit Python / Rubin / Lua
Nampre mit Python lösen (Teil 2)
Ruby- und Python-Syntax ~ branch ~
Implementierung von Fibonacci und Primzahlen (Python)
Python mit Pyenv und Venv