目錄
紙牌題目描述
分析方法一(極有可能超時)
方法二(簡單)
另述有2n張紙牌,標號從1到2n。一次洗牌,可以將牌的排列改成n+1,1,n+2,2,...,n,2n。請問這樣洗牌幾次,可以讓牌回到原始的狀態。比如n=2時,1234->3142->4321->2413->1234 一共洗4次。
輸入每行輸入乙個整數n(1≤n≤10,000),n如果為0,表示輸入結束,不需要處理。
輸出每行輸出乙個樣例的結果。
樣例輸入12
3456
0樣例輸出24
361012
題目給的n達到了100,000,一般的方法極有可能超時。
下面是最先想到的成功超時的方法:
#include //1210 eddy's 洗牌問題 模擬
#include using namespace std;
int n,m;
void change(string &str )
} int main()
cout後經過一番思考和演算……我發現這道題是有規律的。
規律就是1的位置,很容易發現1的位置是從1->2->4->8……如果超過數尾則從頭偏移,總之只要經過若干次移動,1再次移動在1的位置,就能夠保證洗牌洗回了原序列。
#includeusing namespace std;
int main()
while(pos!=1);
printf("%d\n",cnt);
}return 0;
}
#include int main()
【附:一文一圖】
刷題 C Valid Number問題
原題 validate if a given string is numeric.some examples 0 true 0.1 true abc false 1 a false 2e10 true note it is intended for the problem statement to ...
藍本刷題 七夕祭(貨倉選址 均分紙牌)
利用已知模型 1 均分紙牌模型 對於大小為n的陣列a,要使其每個陣列中數量相等 保證滿足可以使每個陣列均分為乙個正整數 sum a a n t 方法 從第乙個開始,要從後面拿來 t n a個,即使不足,也可以認為在此之前,a已經操作了從後面拿來,只是前後順序不一樣,不影響結果。所以可以遍歷a i 後...
刷題 ranking排名問題
有n個考點,每個考點裡面都有考生進行考試,如果現在分別給定每個考場的人數及該考場裡面的考生編號和成績,現在要求將所有考生按分數從高到底進行排序,並按順序輸出所有考生編號 排名 分數相同則按編號大小排序 考場號 以及考場內部的排名。分析 1.必然需要考慮先構造結構體,然後依次讀入學生資訊,再考慮對結構...