【證明】關於項鍊問題中旋轉操作的置換群的迴圈節個數、長度的證明【Pólya】【同餘】
做POJ2154時,對於”置換的迴圈節的個數為gcd(i, n)"表示疑惑,但是看了很多blog,發現都沒有證明這個結論,於是這裡做個簡單的證明。
設一開始珠子的位置在p點,每次旋轉x格。
先證明迴圈節長度為n / gcd(x, n)。
假設這個珠子走了k次回到p點,那麼有
減去p,有
說明了kx是n的倍數,即
又顯然有kx是x的倍數
我們發現kx既是n的倍數,又是x的倍數。但是我們求的是迴圈節長度,即k需要最小,又因為x是常量,那麼我們當然取n和x的最小公倍數了
代換一下lcm
消去x,得到k
Q.E.D.
現證明迴圈節個數是gcd(x, n)
因為迴圈節的長度為n / gcd(x, n),又一共有n個元素,且這n個元素對稱,那麼顯然迴圈節個數就是gcd(x, n)。
Q.E.D.
相關推薦
【證明】關於項鍊問題中旋轉操作的置換群的迴圈節個數、長度的證明【Pólya】【同餘】
做POJ2154時,對於”置換的迴圈節的個數為gcd(i, n)"表示疑惑,但是看了很多blog,發現都沒有證明這個結論,於是這裡做個簡單的證明。 設一開始珠子的位置在p點,每次旋轉x格。 先證明迴圈節長度為n / gcd(x, n)。 假設這個珠子走了k次回到p點,那麼
【Linux】Linux中常用操作命令
詳細信息 hadoop 用戶組 軟件 name vim使用 title redhat tail Linux簡介及Ubuntu安裝 常見指令 系統管理命令 打包壓縮相關命令 關機/重啟機器 Linux管道 Linux軟件包管理 vim使用 用戶及用戶組管理 文件權限管理
【Linux 命令】Linux中常用操作命令和快捷鍵
1 34 個簡單實用的 Ubuntu 快捷鍵 快捷鍵 在alt+ctrl+t 終端 按win鍵開啟搜素dash 1. Ctrl + W: 關閉當前 Nautilus 視窗 2. Ctrl+T: 在 Nautilus 開啟新的 Tab 3. Ctrl +
【leetcode】字串中的第一個唯一字元(C、Python解答)
題目: 字串中的第一個唯一字元 給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = "leetcode" 返回 0. s = "lovelee
AVL平衡二叉樹中旋轉操作的本質及其實現
1.AvlTree的定義 AVL (Adelson Velskii和 Landis)樹是帶有平衡條件的二叉查詢樹。這個平衡條件必須容易保持,而且它必須保證樹的深度是O(log N)。最簡單的想法是要求左右子樹具有相同的高度。 一般限制為:一棵
【Oracle】Oracle中的常用操作
轉換成 sql查詢語句 sub 備份 關系 %d des 統計分析 put 一、ORACLE的啟動和關閉 1、在單機環境下 要想啟動或關閉ORACLE系統必須首先切換到ORACLE用戶,如下 su - oracle a、啟動ORACLE系統 oracle>svrmgr
【java】對數據庫操作的那些事(包含數據庫中的預處理)
exception main exc 獲取 bat dba else .class 可維護 一、連接問題 前面剛介紹了怎麽連接數據庫,也寫了對應的模板。可是它的可維護性很差。那麽怎麽解決問題呢? 首先寫一個配置文件jdbc.properties <s
【java 文件讀寫操作】 生成隨機數,寫入txt,然後從txt中讀出
進行 rac 直接 生成隨機數 catch trace buffered 代碼 tac 1.把生成的隨機數寫入到文件中 1 public static void WriterFun(){ 2 //獲得路徑 3 String filep
【Python】Python中的列表操作
元素 提取 添加 sta 連接 not n個元素 none 格式 Python的列表操作可謂是功能強大且方便(相對於Java)簡單、常規的操作就不說了(這不是一個入門教程),介紹幾個很有特點的例子添加 # 追加到結尾(append) li = [1, 2, 3, 4, 5
【轉載】JAVA中IO流操作的基本規律總結
reader 對象 作文 若是 gpo 是否 目的 io流 基本 流操作的基本規律:三個明確 1.明確源和目的; 源:輸入流即讀取流 InputStream,Reader 目的:輸出流即寫入流 OutputStream, Writer 2.明確操作的數據是
【轉載】Qt中圖像的顯示與基本操作
繪制 nta pen 位置 產生 縮放 eas urn mod Qt可顯示基本的圖像類型,利用QImage、QPxmap類可以實現圖像的顯示,並且利用類中的方法可以實現圖像的基本操作(縮放、旋轉)。 參考:Qt中圖像的顯示與基本操作 - ykm0722的專欄 - 博客頻道
【轉】Python中操作mysql的pymysql模塊詳解
定義 padding 參數化查詢 finall 支持 順序 執行sql mysq syntax Python中操作mysql的pymysql模塊詳解 前言 pymsql是Python中操作MySQL的模塊,其使用方法和MySQLdb幾乎相同。但目前pymysql支持p
【LeetCode】154. 尋找旋轉排序陣列中的最小值 II 結題報告 (C++)
原題地址:https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array-ii/description/ 題目描述: 假設按照升序排序的陣列在預先未知的某個點上進行了旋轉。 ( 例如,陣列 [0,1,2,4,5,
【LeetCode】153. 尋找旋轉排序陣列中的最小值 結題報告 (C++)
原題地址:https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/description/ 題目描述: 假設按照升序排序的陣列在預先未知的某個點上進行了旋轉。 ( 例如,陣列 [0,1,2,4,5,6,7
【前端】javascript中的陣列及操作方法
建立: 物件的例項建立:var aList = new Array(1,2,3); 直接建立:var aList = [1,2,3,'a'] 陣列的api:增刪改查/反轉排序/合成字串 1.增:放到最後 var list = ['穿山甲','水娃','蛇精'] list.push
【Java併發】Java中的原子操作
Java中的原子操作 原子更新基本型別 原子更新陣列 原子更新引用型別 原子更新欄位類 參考 原子更新基本型別 一個生動的例子 public class AtomicIntegerExample { privat
【LeetCode】153. 尋找旋轉排序陣列中的最小值
題目描述 假設按照升序排序的陣列在預先未知的某個點上進行了旋轉。 ( 例如,陣列 [0,1,2,4,5,6,7] 可能變為 [4,5,6,7,0,1,2] )。 請找出其中最小的元素。 你可以假設陣列
【nginx原始碼】nginx中的鎖與原子操作
問題引入 多執行緒或者多程序程式訪問同一個變數時,需要加鎖才能實現變數的互斥訪問,否則結果可能是無法預期的,即存在併發問題。解決併發問題通常有兩種方案: 1)加鎖:訪問變數之前加鎖,只有加鎖成功才能訪問變數,訪問變數之後需要釋放鎖;這種通常稱為悲觀鎖,即認為每次
【快學SCALA】Scala中檔案的讀取、寫入、控制檯輸入操作
1、檔案的讀取、寫入操作 2、控制檯操作程式碼實戰 val file = Source.fromFile("E:\\WangJialin.txt") for(line <-file.getLines){println(file)
【達內課程】Android中關於電話的操作
關鍵程式碼如下: Intent intent = new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:"+editTe