problem description
設2n張牌分別標記為1, 2, …, n, n+1, …, 2n,初始時這2n張牌按其標號從小到大排列。經一次洗牌後,原來的排列順序變成n+1, 1, n+2, 2, …, 2n, n。即前n張牌被放到偶數字置2, 4, …, 2n,而後n張牌被放到奇數字置1, 3, …, 2n-1。可以證明對於任何乙個自然數n,經過若干次洗牌後可恢復初始狀態。現在你的的任務是計算對於給定的n的值(n≤10^5),最少需要經過多少次洗牌可恢復到初始狀態。
input
輸入資料由多組資料組成。每組資料僅有乙個整數,表示n的值。
output
對於每組資料,輸出僅一行包含乙個整數,即最少洗牌次數。
sample input
10 sample output
ps:這種題一看就是找規律,所以關鍵就在打表資料的強弱了
打表找規律正確姿勢:
1.盡量寫**打表,不要手推
2.資料盡可能的大一些,不要只是找幾個資料
3.資料要學會正著看,反著看,斜著看等等
**:
#include
int main()
printf("%d\n",cnt);
}return
0;}
總結:這道題我把前7個數的過程手寫出來了,但是只找到了最後如果某一步的首位為2^x,那麼接下來就只需要x步就能歸位,然後我就想啊,該怎麼找到這一步呢,結果到最後比賽結束了也沒找出來0.0
想了一下,其實我應該**打表找規律的,因為自己手推的話那資料肯定不夠強,規律並不明顯。然後就是沒有倒著看一下資料,沒有發現比n小的數它的上一步都是它的2倍,也是對資料不敏感啊
by: 弱智的大魔王
N皇后問題 (回溯 打表)
第一種方法,需打表,否則超時 pragma warning disable 4786 includeusing namespace std int used column 12 標記列是否被用過 int used ldia 102 used rdia 102 標記對角線是否被用過 int n,cc,...
打表法 買蘋果問題
題目 小虎去附近的商店買蘋果,奸詐的商販使用了 交易,只提供6個每袋和8個每袋的包裝包裝不可拆分。可是小虎現在只想購買恰好n個蘋果,小虎想購買盡量少的袋數方便攜帶。如果不能購買恰好n個蘋果,小虎將不會購買。輸入乙個整數n,表示小虎想購買的個蘋果,返回最小使用多少袋子。如果無論如何都不能正好裝下,返回...
51nod 1062 序列中最大的數 (打表)
基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 有這樣乙個序列a a 0 0 a 1 1 a 2i a i a 2i 1 a i a i 1 輸入乙個數n,求a 0 a n 中最大的數。a 0 0,a 1 1,a 2 1,a 3 2,a 4 1,a 5 3,a 6...