程式設計師的演算法趣題 Q3翻牌

2021-09-11 07:45:51 字數 851 閱讀 1334

這裡有 100 張寫著數字 1~100 的牌,並按順序排列著。最開始所有牌都是背面朝上放置。某人從第 2 張牌開始,隔 1 張牌翻牌。然後第 2,4, 6, …, 100 張牌就會變成正面朝上。接下來,另乙個人從第 3 張牌開始,隔 2 張牌翻牌(原本背面朝上的,翻轉成正面朝上;原本正面朝上的,翻轉成背面上)。再接下來,又有乙個人從第 4 張牌開始,隔 3 張牌翻牌( 圖1 )。像這樣,從第 n 張牌開始,每隔 n-1 張牌翻牌,直到沒有可翻動的牌為止。

求當所有牌不再變動時,所有背面朝上的牌的數字。

public

class

q03private

static

void

method2()

}if(flag)}}

private

static

void

method1

(int

data)

for(

int i =

2; i < data.length; i++)}

for(

int i =

0; i < data.length; i++)}

}}

1、4、9、16、25、36、49、64、81、100

method2() 是用陣列來實現的,但從左到右按順序處理也就意

味著「已經翻轉過的部分不再翻轉」。如果針對這一點進行優化,還可

以繼續簡化程式,如method2();

private

static

void

method2()

}if(flag)

}}

演算法趣題Q3 翻牌

這裡有100 張寫著數字1 100 的牌,並按順序排列著。最開始所有 牌都是背面朝上放置。某人從第2 張牌開始,隔1 張牌翻牌。然後第2,4,6,100 張牌就會變成正面朝上。接下來,另乙個人從第3 張牌開始,隔2 張牌翻牌 原本背面朝上 的,翻轉成正面朝上 原本正面朝上的,翻轉成背面朝上 再接下來...

程式設計師的演算法趣題Perl版 (二)

竟然一月一更。第四題 假設一根木棒n厘公尺,需要切分為一厘公尺長的木棒,每根木棒只可以乙個人切,木棒切成兩根可以兩個人切 求 n厘公尺長木棒,m個人最少要切幾次,比如n 8,m 3,則需要切4次。perl 20170930 use strict sub cut elsif currentparts ...

100 的程式設計師都想挑戰的演算法趣題!

計算機的世界每天都在發生著深刻的變化。新作業系統的發布 cpu效能的提公升 智慧型手機和平板電腦的流行 儲存介質的變化 雲的普及 這樣的變化數不勝數。在這樣日新月異的時代中,演算法 是不變的重要基石。要編寫高效率的程式,就需要優化演算法。無論開發工具如何進化,熟識並能靈活運用演算法仍然是對程式設計師...