2016-05-30 9 views
-1
#include <iostream> 
using namespace std; 



int main() 
{ 
    int index = 0; 
    int val; 
    int x; 

    while (val != 0) 
    { 

    cin >> val; 



    for (index = 1; index < 32; index++) 
    { 
     x = val * index - index/index; 
     cout << x << " " << val << " " << index << endl; 
     cout << x % 4 << endl; 
     cout << x % 3 << endl; 
     cout << x % 2 << endl; 

    } 
    } 


    return 0; 
} 

Warum ist es, dass, wenn der Eingang < 1, 2, 3, 4 ...> jeder 31. Index in einem Algorithmus codiert ist ähnlich dem Eingang 1, der gerade Index - 1; aber das Muster ist:Modulus und Binärzahlen

von twelves (1-12, 12-24) [000, 111, 220, 301, 010, 121, 200, 311, 020, 101, 211, 321], [000, 111 , 220, 301, 010 ... Wiederholen für Eingabe < 1>;

des 31. Index: [1] 200, 111, 020, 301, 210, 121, 000, 311, 220, 101, 010, 321, 200 ... [13]

Warum ist die Beziehung ähnlich und gibt es einen Grund dafür in binär?

Edit: Um Frage zu klären, wenn Sie den Rest einer bestimmten Ganzzahl nehmen, und die Beziehung wird spezifisch für jede Inkrementierung ... ist der Grund dafür wegen der binären und wie die Semantik auf der Implementierung eines Weges basiert konvergiere Integer-Wert zu Binärwert? Ich weiß, dass High-Level-Programmierung Hash verwendet und innerhalb von Programmen kommuniziert ... aber die Hauptidee ist, dass der Integer-Wert binärspezifisch ist ... ist das eine binärspezifische Operation oder nur ein zufälliger Algorithmus, der Muster in Zahlen zeigt?

+3

Ihre Frage ergibt keinen Sinn. Bitte klären Sie. – Schilcote

+0

Ist das relevant? http://stackoverflow.com/questions/26047196/is-there-any-way-to-write-mod-31-without-modul-division-operators – mydiax

+0

@mydiax Wie unterscheiden Sie eigentlich _binary Eingang_? –

Antwort

1

Wichtige Tatsache:

12 mod 2 == 12 mod 3 == 12 mod 4 == 0 

Eine weitere wichtige Tatsache, etwas abstraktere:

(x + y) mod k == ((x mod k) + (y mod k)) mod k 

(Unter der Annahme, x, y und k alle ganzen Zahlen.)

Aus der zweiten Tatsache , können wir folgern:

(x + 12) mod k == ((x mod k) + (12 mod k)) mod k 

Wie es passiert:

(x mod k) mod k == x mod k 

Und jetzt wissen wir, dass

(x + 12) mod 2 == (x mod 2) + 0 == x mod 2 
(x + 12) mod 3 == (x mod 3) + 0 == x mod 3 
(x + 12) mod 4 == (x mod 4) + 0 == x mod 4 

Also das Muster der Mods in einem Zyklus von 12

Im Allgemeinen wiederholen wird, wird die Zykluslänge sein das kleinste gemeinsame Vielfache der Teiler.

+0

2 * 3 * 4 = 24, nicht 12 – ajc2000

+0

@ ajc2000: yeah, sollte lcm (2,3,4) gewesen sein, aber es lohnt sich nicht, das Problem zu erklären. Direkt zum Mod übersprungen. Danke – rici

+0

Ich fand, dass wenn Sie mit und anfangen, sie in Reihen und Spalten setzend, jedes Paar irgendeiner Zahl das erste und letzte Array von Mods geben wird.Also, 1 beginnt mit 000, endet mit 200, jede Zahl ist so, egal was, was auch immer es mit der Spalte, Zeile, und begann ist das, was Sie mir sagen wollen? – mydiax

Verwandte Themen