Forberedelse til kodeinterviews · Lektion

Arbejd modulo et primtal

Læg sammen, gang, og hold dig inden for modulet

Lektion 1 af 413 trin

Arbejd modulo et primtal er en gratis Forberedelse til kodeinterviews-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Forberedelse til kodeinterviews, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Forberedelse til kodeinterviews-kurset indeholder 4 lektioner i alt.

Hvorfor tage modulo

Svar i konkurrencer kan blive enorme, langt større end enhver heltalstype andre steder. Derfor beder opgaver om resultatet modulo et stort primtal, så tallene forbliver små. 🔢

Mød det berømte modul

Det primtal, du oftest vil se, er 1000000007, ofte skrevet som 1e9+7. Det er lige stort nok til at undgå sammenfald og lille nok til at passe i 64 bit.

MOD = 1000000007

Hvad modulo betyder

Modulo-operatoren giver resten efter en division. Derfor er 17 % 5 lig med 2, fordi 17 giver resten 2, når det divideres med 5.

print(17 % 5)  # 2

Addition holder sig inden for modulet

Du kan først addere og tage modulo til sidst eller tage modulo undervejs. Resten bliver den samme i begge tilfælde, så reducér ofte for at holde tallene små.

total = (a + b) % MOD

Multiplikation holder sig også indenfor

Den samme regel gælder for multiplikation: tag produktet modulo primtallet. Python håndterer store heltal indbygget, men modulo holder hver værdi lille og beregningen hurtig.

prod = (a * b) % MOD

Reducér efter hvert trin

I en lang løkke skal du anvende % MOD ved hver iteration. Det forhindrer tallene i at vokse voldsomt og holder hver operation billig og forudsigelig.

ans = (ans * i) % MOD

Subtraktion kan blive negativ

Subtraktion kan give en negativ rest i mange sprog. Læg MOD til igen før den endelige modulo-operation, så resultatet ender i det ikke-negative område fra 0.

diff = (a - b + MOD) % MOD

Pythons venlige modulo

Godt nyt: Pythons % giver allerede et ikke-negativt resultat for et positivt modul. Derfor giver -1 % 7 resultatet 6, ikke -1, så du slipper for en ekstra korrektion.

print(-1 % 7)  # 6

Modulo fordeler sig over operationer

Grundideen er: (a op b) % m er lig med (a%m op b%m) % m ved addition og multiplikation. Det lader dig reducere input, før du kombinerer dem.

Division er undtagelsen

Addition, subtraktion og multiplikation fungerer problemfrit modulo et tal. Almindelig division gør ikke, og senere på kurset får du brug for en modulær invers.

Sæt MOD én gang øverst

Definér MOD som en konstant i begyndelsen af din løsning. Én navngiven værdi er bedre end at sprede 1000000007 ud i koden, hvor en slåfejl kan gemme sig.

MOD = 10**9 + 7

Hurtigt tjek

Hvorfor skal du lægge MOD til, før du tager modulo af en subtraktion?

Opsummering

Du kan nu holde enorme tællere små med et primmodul som 1e9+7. Reducér addition, subtraktion og multiplikation ved hvert trin, pas på negative værdier, og gem division til inverser. 🎯

Gratis at komme i gang

Lær Forberedelse til kodeinterviews med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
90
Lektioner
360

Ofte stillede spørgsmål

Er lektionen “Arbejd modulo et primtal” gratis?

Ja — hele teksten til “Arbejd modulo et primtal” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Forberedelse til kodeinterviews-kurset, skal du opgradere til CoddyKit PRO. Forberedelse til kodeinterviews-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Arbejd modulo et primtal”?

Læg sammen, gang, og hold dig inden for modulet Du øver dig i Forberedelse til kodeinterviews med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Forberedelse til kodeinterviews?

Der kræves ingen tidligere erfaring. Forberedelse til kodeinterviews på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Arbejd modulo et primtal”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Forberedelse til kodeinterviews-lektion?

Ja. Alle Forberedelse til kodeinterviews-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Arbejd modulo et primtal
  2. Hurtig modulær eksponentiering
  3. Modulær invers via Fermat
  4. nCr med forberegnede fakulteter
← Tilbage til Forberedelse til kodeinterviews