2016-05-30 1 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; 
} 

Почему, когда вход < 1, 2, 3, 4 ...> каждый тридцать первый индекс кодируется в алгоритме аналогично вход 1, который является только индекс - 1; но модель имеет вид:Modulus и Двоичные числа

из двенадцати (1-12, 12 -24) [000, 111, 220, 301, 010, 121, 200, 311, 020, 101, 211, 321], [000, 111 , 220, 301, 010 ... повторяющиеся для ввода < 1>;

31-го индекса: [1] 200, 111, 020, 301, 210, 121, 000, 311, 220, 101, 010, 321, 200 ... [13]

Почему отношение похоже и есть причина для этого в двоичном формате?

Редактировать: Чтобы уточнить вопрос, когда вы берете остаток определенного целого числа, и отношение становится специфичным для каждого приращения ... является причиной этого из-за двоичного кода и того, как семантика основана на реализации способа сходится целочисленное значение к двоичному значению? Я знаю, что высокоуровневое программирование использует хеш и обменивается внутри программ ... но основная идея заключается в том, что целочисленное значение должно быть двоичным. Это бинарная специфическая операция или просто какой-то случайный алгоритм, который показывает шаблоны в числах?

+3

Ваш вопрос не имеет смысла. Просьба уточнить. – Schilcote

+0

Это уместно? http://stackoverflow.com/questions/26047196/is-there-any-way-to-write-mod-31-without-modulus-division-operators – mydiax

+0

@mydiax Как вы отличить _binary input_ на самом деле? –

ответ

1

Важный факт:

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

Другой важный факт, чуть более абстрактны:

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

(Предполагая, что х, у и к все целые числа.)

Из второго факта , мы можем вывести:

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

Как это происходит:

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

И теперь мы знаем, что

(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 

Так картина модов будет повторяться в цикле 12.

В общем, длина цикла будет наименьшее общее число делителей.

+0

2 * 3 * 4 = 24, а не 12 – ajc2000

+0

@ ajc2000: да, должно было быть lcm (2,3,4), но не стоило бы объяснять это. Пропустили прямо к моду. Спасибо – rici

+0

Я обнаружил, что при запуске с и , помещая их в строки и столбцы, каждая пара любого числа даст первый и последний массив модов.Итак, 1 начинается с 000, заканчивается на 200, каждый номер такой же, независимо от того, что бы он ни начал с колонки, строки и - это то, что вы пытаетесь мне рассказать? – mydiax

Смежные вопросы