Ich habe mich im Internet umgesehen und dieses Google Code Jam Puzzle gefunden. Es hat mir sehr gut gefallen und ich habe beschlossen, es hier zu posten.
Neues Lotteriespiel
Die Lotterie verändert sich! Die Lotterie hatte früher eine Maschine, um eine zufällige Gewinnzahl zu generieren. Aufgrund von Betrugsproblemen hat die Lotterie beschlossen, eine weitere Maschine hinzuzufügen. Die neue Gewinnzahl ist das Ergebnis der bitweisen UND-Verknüpfung zwischen den beiden von den beiden Maschinen generierten Zufallszahlen.
Um das bitweise UND von X und Y zu finden , schreiben Sie beide in Binärform. dann hat ein Bit im Ergebnis in binär eine 1, wenn die entsprechenden Bits von X und Y beide 1 waren, und andernfalls eine 0. In den meisten Programmiersprachen wird das bitweise UND von X und Y in X & Y geschrieben .
Zum Beispiel: Die alte Maschine generiert die Nummer 7 = 0111 . Die neue Maschine generiert die Nummer 11 = 1011 . Die Gewinnzahl ist (7 UND 11) = (0111 UND 1011) = 0011 = 3 .
Mit dieser Maßnahme erwartet die Lotterie, die Fälle betrügerischer Ansprüche zu reduzieren, aber leider hat ein Mitarbeiter der Lotteriefirma die folgenden Informationen durchgesickert: Die alte Maschine generiert immer eine nicht negative Ganzzahl kleiner als A und die neue Maschine generiert immer eine nicht negative ganze Zahl kleiner als B .
Catalina möchte diese Lotterie gewinnen und versuchen, alle nicht negativen ganzen Zahlen unter K zu kaufen .
Angesichts von A , B und K möchte Catalina wissen, auf wie viele verschiedene Arten die Maschinen ein Zahlenpaar erzeugen können, das sie zu einer Gewinnerin macht.
Können Sie ihr helfen?
EingangDie erste Zeile der Eingabe gibt die Anzahl der Testfälle an, T. T-Zeilen folgen, jede Zeile mit drei Zahlen AB K.
AusgabeGeben Sie für jeden Testfall eine Zeile mit "Fall #x: y" aus, wobei x die Testfallnummer (beginnend mit 1) und y die Anzahl der möglichen Paare ist, die die Maschinen generieren können, um Catalina zu einem Gewinner zu machen.
Grenzen1 ≤ T ≤ 100. Kleiner Datensatz
1 ≤ A ≤ 1000. 1 ≤ B ≤ 1000. 1 ≤ K ≤ 1000. Großer Datensatz
1 ≤ A ≤ 109. 1 ≤ B ≤ 109. 1 ≤ K ≤ 109. Probe
Input Output 5 Case #1: 10 3 4 2 Case #2: 16 4 5 2 Case #3: 52 7 8 5 Case #4: 2411 45 56 35 Case #5: 14377 103 143 88Im ersten Testfall sind dies die 10 möglichen Paare, die von der alten bzw. der neuen Maschine generiert werden und die sie zu einer Gewinnerin machen: <0,0>, <0,1>, <0,2>, <0,3> , <1,0>, <1,1>, <1,2>, <1,3>, <2,0> und <2,1>. Beachten Sie, dass <0,1> nicht mit <1,0> identisch ist. Auch wenn das Paar <2, 2> von den Maschinen erzeugt werden könnte, würde Catalina nicht gewinnen, da (2 UND 2) = 2 und sie nur die Zahlen 0 und 1 gekauft hat.
Hier ist der Link für das eigentliche Problem: https://code.google.com/codejam/contest/2994486/dashboard#s=p1
Dies ist Code-Golf, also gewinnt der kürzeste Code. Viel Glück