串旋转杂耍算法 [英] Juggling algorithm of string rotation

查看:168
本文介绍了串旋转杂耍算法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有几种方法来处理柱旋转
关于柱旋转深,有三个线性算法。(点击的这里检查)

There are several ways to deal with string rotation.
"Programming Pearls" talks about string rotation in deep, with three linear algorithms.(click here to check it)

第一个是所谓的杂耍算法,这是我花了很多时间去研究它,但我仍然无法理解的作用大公因式扮演它。任何人都可以详细解释一下?

The first one is called "Juggling algorithm", which I spent a lot time to study it, but I still can't understand the role that Great Common Divisor plays in it. Can anybody explain it in detail ?

推荐答案

您通过移动,步长为 D 旋转的元素。这个过程返回一定数量的举动后,这样你需要申请 M 长周期 L = N / M 的总和。

You rotate the elements by moving them in steps of d. This process loops back after a certain number of moves, so that you need to apply m cycles of length l=n/m in total.

是解决方程的第一个值 LD = 0(MOD N),使<$ C $ç> M 是precisely GCD(N,D)

l is the first value that solves the equation l.d = 0 (mod n), so that m is precisely gcd(n, d).

Example 1: for n=12, d=3, 3 cycles of length 4:
 0  3  6  9
 1  4  7 10
 2  5  8 11

Example 2: for n=12, d=10, 2 cycles of length 6:
 0 10 8 6 4 2
 1 11 9 7 5 3

这篇关于串旋转杂耍算法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆