锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
銆銆鍏堝亣璁綼2 = t, 棰樼洰緇欏畾浜嗛掓帹鍏崇郴錛欰n = 2 * t * An-1 - An-2 (n > 2)錛屽垵鍊糀1 = 1, A2 = t錛涢鐩姹係n = An ^ 2 + An-1 ^ 2 + ... + A1 ^ 2銆?br>銆銆鍙嶅搴旂敤閫掓帹鍏崇郴寰楀埌錛?br>銆銆
銆銆鐒跺悗Sn-1鍒╃敤鐩稿悓鐨勬柟寮忓睍寮錛屾妸4tAn-2An-3綰﹀幓錛屽緱鍒幫細
銆銆
銆銆榪欐牱灝辨瘮杈冨鏄撳緱鍑篠n鐨勯氶」錛?br>銆銆
銆銆褰撳垵榪欎釜棰樼洰涔嬫墍浠ユ病鎯沖埌榪欑鏂規硶錛屽氨鏄洜涓轟竴鐪嬪埌閫掓帹鍏崇郴錛屽氨鎯崇潃鐢ㄤ竴鑸В鏂圭▼鐨勬柟娉曞幓姹傝В閫氶」錛屾濈淮琚眬闄愪簡錛屽叾瀹炵敤綆鍗曠殑鏂瑰紡灝卞彲浠ユ帹鍑烘潵鐨勩備互鍚庡浜庝竴涓棶棰橈紝搴旇浠庡涓柟闈㈠幓鎯籌紝涓嶈兘鎯沖綋鐒跺晩銆傛兂璧鋒渶榪戠湅鍒扮殑涓孌佃瘽錛屼互姝よ嚜鍕夛細
銆銆姝e垯琛ㄨ揪寮忛潪甯稿己澶э紝浣嗘槸瀹冨茍涓嶈兘涓烘瘡涓涓棶棰樻彁渚涙紜殑瑙e喅鏂規銆備綘搴旇瀛︿範瓚沖澶氱殑鐭ヨ瘑錛屼互杈ㄥ埆浠涔堟椂鍊欏畠浠槸鍚堥傜殑錛屼粈涔堟椂鍊欏畠浠細瑙e喅浣犵殑闂錛屼粈涔堟椂鍊欏畠浠駭鐢熺殑闂姣旇瑙e喅鐨勯棶棰樿繕瑕佸銆?br>銆銆涓浜涗漢錛岄亣鍒頒竴涓棶棰樻椂灝辨兂錛?#8220;鎴戠煡閬擄紝鎴戝皢浣跨敤姝e垯琛ㄨ揪寮忋?#8221;鐜板湪浠栨湁涓や釜闂浜嗐傗斺擩amie Zawinski
]]>
]]>
銆愰鐩垎鏋愩?br>銆銆瀵逛簬媯嬬洏鏀捐濺闂鍙互鐢ㄧ粍鍚堟暟瀛︾殑鐭ヨ瘑鏉ヨВ鍐籌紝浣嗘槸瀵逛簬鍚鍖虹殑鎽嗘斁闂錛岃櫧鐒剁粍鍚堟暟瀛︾粰鍑轟簡緇忓吀鐨勬鐩樺欏瑰紡+瀹規枼鍘熺悊鐨勮В娉曪紝浣嗘槸瀹為檯涓鐩樺欏瑰紡鐨勬眰瑙f槸寰堝洶闅劇殑錛屽洜姝や竴鑸渶瑕佸熷姪鐘舵佸帇緙╁姩鎬佽鍒掓眰瑙c?br>銆銆鐜板湪棰樼洰涓姹傚嚭浜掍笉鏀誨嚮鐨勮薄鐨勬柟娉曟暟錛岃薄鐨勬敾鍑昏礬綰挎槸鏂滅殑錛屾槸涓嶆槸鍙互鑰冭檻閲囩敤鏀捐濺鐨勬柟娉曟潵瑙e憿錛熷皢媯嬬洏榛戠櫧鏌撹壊錛屽鏋滀竴涓薄鍦ㄩ粦鑹茬殑鏍煎瓙閲岄潰錛岄偅涔堝畠涓瀹氫笉浼氭敾鍑誨埌鐧借壊鐨勬牸瀛愶紝榪欐牱鐨勮瘽鍙互鍒嗗紑璁℃暟錛岀劧鍚庢渶鍚庡埄鐢ㄤ箻娉曞師鐞嗗姞璧鋒潵灝辮浜嗐傛妸媯嬬洏鏃嬭漿45搴︼紝榪欐牱璞$殑鏀誨嚮璺嚎灝辨槸鐩寸殑浜嗭紝濡傛灉鍙冭檻涓縐嶉鑹茬殑璇濓紝閭d箞闂灝辮漿鍙樻垚浜嗙粡鍏哥殑鏀捐濺闂浜嗭紝鍙互鍒╃敤鍔ㄦ佽鍒掕В鍐熾?br>銆銆璁綿p[i][j]琛ㄧず鍓峣琛屾斁浜唈涓濺鐨勬柟娉曟暟錛宑[i]琛ㄧず絎琲琛屽彲浠ユ斁緗殑媯嬪瓙鏁伴噺錛岄偅涔堣漿縐繪柟紼嬩負錛?br>銆銆銆銆dp[i][j]
= dp[i-1][j] + dp[i-1][j-1] * (c[i] - (j -
1))
銆銆闇瑕佹敞鎰忕殑鏄痗鏁扮粍搴旇鏄搴忕殑錛岃繖鏍鋒墠鑳戒繚璇佸墠闈㈢殑j-1琛屾斁浜嗚濺錛屽搴旇繖涓琛屽氨鏈塲-1涓綅緗笉鍙斁浜嗐?br>銆銆榪欎釜棰樼洰鐨刣p鏂圭▼涓嶉毦鎯籌紝浣嗘槸濡備綍鎶婃ā鍨嬭漿鍖栧埌鏀捐濺闂鏄笉瀹規槗鎯沖埌鐨勶紝灝ゅ叾鏄皢媯嬬洏榛戠櫧鏌撹壊鍚庡垎寮璁℃暟鐨勬兂娉曪紝闈炲父宸у銆?br>
棰樼洰浠g爜錛?
2 #include <algorithm>
3 using namespace std;
4 const int N = 70;
5
6 void init(int n, int c1[N], int c2[N])
7 {
8 memset(c1, 0, sizeof(int) * N);
9 memset(c2, 0, sizeof(int) * N);
10 for (int i = 1; i <= n; i++)
11 {
12 for (int j = 1; j <= n; j++)
13 {
14 if ((i + j) & 1)
15 c2[(i+j)/2]++;
16 else
17 c1[(i+j)/2]++;
18 }
19 }
20 }
21 void bishops(int n, int dp[N][N], int c[N])
22 {
23 for (int i = 0; i <= n; i++)
24 dp[i][0] = 1;
25 for (int i = 1; i <= n; i++)
26 for (int j = 1; j <= c[i]; j++)
27 dp[i][j] = dp[i-1][j] + dp[i-1][j-1] * (c[i] - j + 1);
28 }
29
30 int main()
31 {
32 int n, k, c1[N], c2[N], dp1[N][N], dp2[N][N], ans;
33
34 while (scanf("%d %d", &n, &k) == 2)
35 {
36 if (n == 0 && k == 0)
37 break;
38 init(n, c1, c2);
39 sort(c1 + 1, c1 + n + 1);
40 sort(c2 + 1, c2 + n);
41 memset(dp1, 0, sizeof(dp1));
42 memset(dp2, 0, sizeof(dp2));
43 bishops(n, dp1, c1);
44 bishops(n - 1, dp2, c2);
45 ans = 0;
46 for (int i = 0; i <= k; i++)
47 ans += dp1[n][i] * dp2[n-1][k-i];
48 printf("%d\n", ans);
49 }
50
51 return 0;
52 }
娉細鏈枃浣滀簬2009騫?鏈?3鏃?19鐐?1鍒?br>
]]>
銆銆涓涓? * 3鐨勬鐩樻湁3縐嶆憜娉曪紝涓涓?*3鐨勬鐩橀渶瑕佺浉浜掍氦閿欑殑鎽嗘斁錛屽洜姝ゆ湁2縐嶆憜娉曪紝鍏朵綑渚濇綾繪帹銆?br>銆銆浣嗘槸榪欎釜閫掓帹鏂圭▼瀵逛簬榪欐牱鐨勬暟鎹噺鑲畾鏄棤娉曟帴鍙楃殑銆傚皢鏂圭▼榪涜鍖栫畝錛?br>銆銆銆銆f[n] = f[n-2] * 3 + (3 * f[n-4] + f[n-6] * 2 + ...) - f[n-4]
銆銆銆銆銆銆 = f[n-2] * 3 + f[n-2] - f[n-4]
銆銆銆銆銆銆 = 4 * f[n-2] - f[n-4]
銆銆榪欐牱灝辮漿鍖栨垚浜嗙嚎鎬ч掓帹鏂圭▼錛屽彲浠ョ敤鐭╅樀鏉ュ仛浜嗐?br>銆銆璇濊榪欎釜棰樼洰鎴戝湪HOJ涓婂仛鐨勬椂鍊欏洜涓烘暟鎹皬灝辯洿鎺(n^2)浜嗭紝鐪嬫潵瀵逛簬涓涓鐩粩緇嗘濊冦佸彂鏁f濈淮榪樻槸寰堥噸瑕佺殑銆?br>銆銆鏃㈢劧3*n鐨勫彲浠ュ仛錛岄偅涔?*n搴旇涔熷彲浠ャ傚悗鏉ュ彂鐜板眳鐒惰繕鐪熸湁榪欎釜棰橈細POJ 3420銆?*n鐨勯掓帹鏂圭▼涓猴細
銆銆銆銆f[n] = f[n-1] + 4 * f[n-2] + 2 * f[n-3] + 3 * f[n-4] + 2 * f[n-5] + 3 * f[n-6] + ...
銆銆銆銆銆銆 = 5 * f[n-2] + 6 * f[n-3] + 5 * f[n-4] + 5 * f[n-5] + ...
銆銆銆銆銆銆 = 5 * f[n-2] + (5 * f[n-3] + 6 * f[n-4] + 5 * f[n-5] + ...) + f[n-3] - f[n-4]
銆銆銆銆銆銆 = 5 * f[n-2] + f[n-1] + f[n-3] - f[n-4]
銆銆鍚庨潰鐨勫仛娉曞氨涓鏍蜂簡錛岀畻娉曞鏉傚害(4 ^ 3 * log n)銆?br>
]]>
銆愰鐩垎鏋愩?br>銆銆榪欎釜棰樼洰涔嶄竴鐪嬫尯綆鍗曠殑錛屼絾鏄兂鍋氬榪樻槸瑕佷粩緇嗙殑鎬濊冧笅鐨勩傝ˉ闆嗚漿鍖栫殑鎬濇兂錛屾眰鍑烘墍鏈夊叡綰跨殑涓夊厓緇勶紝鐒跺悗鐢ㄦ繪暟鍑忔帀灝辨槸絳旀浜嗭紝鍏抽敭灝辨槸濡備綍姹傚叡綰夸笁鍏冪粍銆倄鍧愭爣鐩稿悓鍜寉鍧愭爣鐩稿悓鐨勬瘮杈冨ソ璁$畻錛屽湪涓鏉℃枩綰跨殑灝變笉濂界畻浜嗭紝鐢諱釜鍥懼彂鐜幫紝鍗充嬌鏂滅巼鐩稿悓鐨勭嚎錛岀粡榪囩殑鏍肩偣鏁板彲鑳藉悇涓嶇浉鍚屻傛濊礬褰撶劧榪樻槸鏋氫婦y / x錛堜笉鍚岀殑y / x紜畾浜嗕笉鍚岀殑鐭╁艦鍖哄煙錛夛紝涔嬪悗濡備綍鏈夋晥鐨勮綆楋紝鎴戦噰鐢ㄧ殑鏂規硶鍙兘鏈変簺楹葷儲錛屾湁鐐圭被瀹規枼鐨勬柟娉曘備互鏂滅巼涓篴 / b涓轟緥錛?a, b) = g錛岄偅涔坢 * n鐨勫尯鍩熷唴涓瀹氭湁(m - a + 1) * (n - b + 1)涓偅涔堝ぇ鐨勭煩褰紝榪欐牱鐨勭煩褰㈢粡榪囩殑鏍肩偣鏁版槸(g + 1)錛涚劧鍚庡洜涓哄悓絳夋枩鐜囧皬涓鐐圭殑鐭╁艦(a - a / g, b - b / g)涔熸槸瀛樺湪鐨勶紝涓暟鍚屾牱鍙互緇熻鍑烘潵錛屼絾鏄湁浜涘ぇ鐭╁艦鍖呮嫭浜嗭紝瑕佸幓鎺夛紱鍥犳灝遍噰鐢ㄨ繖縐嶆濇兂錛屽厛姹傚嚭澶х煩褰㈢殑涓暟錛岀劧鍚庝緷嬈″線涓嬪噺錛屽氨鍙互閬垮厤閲嶅璁℃暟浜嗐傝櫧鐒惰繖鏍峰鏉傚害鏈夌偣楂橈紝涓嶈繃鏋侀檺鏁版嵁榪樻槸姣旇緝蹇殑璺戝嚭鏉ヤ簡銆?br>銆銆璇寸殑鍙兘涓嶅お娓呮錛屽叿浣撲唬鐮佸涓嬶細
2 #include <iostream>
3 using namespace std;
4 const int N = 1024;
5
6 bool tag[N][N];
7 long long calc(long long n)
8 {
9 if (n <= 2)
10 return 0;
11 return n * (n - 1) * (n - 2) / 6;
12 }
13 int gcd(int a, int b)
14 {
15 return b == 0 ? a : gcd(b, a % b);
16 }
17
18 int main()
19 {
20 int m, n, g, a, b, timer = 1, cnt[N], ta, tb;
21 long long ans;
22
23 while (scanf("%d %d", &m, &n) == 2)
24 {
25 memset(tag, 0, sizeof(tag));
26 if (m == 0 && n == 0)
27 break;
28 ans = calc((m + 1) * (n + 1)) - calc(m + 1) * (n + 1) - calc(n + 1) * (m + 1);
29 for (int i = m; i >= 1; i--)
30 for (int j = n; j >= 1; j--)
31 {
32 g = gcd(i, j);
33 a = i / g, b = j / g;
34 if (tag[a][b]) continue;
35 memset(cnt, 0, sizeof(cnt));
36 tag[a][b] = 1;
37 a = i, b = j;
38 ta = i / g, tb = j / g;
39 for (int k = g; k >= 2; k--)
40 {
41 cnt[k] += (m - a + 1) * (n - b + 1);
42 ans -= calc(k + 1) * cnt[k] * 2;
43 for (int t = 1; t <= k - 2; t++)
44 cnt[k-t] -= (t + 1) * cnt[k];
45 a -= ta, b -= tb;
46 }
47 }
48 cout << "Case " << timer++ << ": " << ans << endl;
49 }
50
51 return 0;
52 }
53
]]>
銆銆涔熷氨鏄竴涓鏂ュ師鐞嗐傜劧鍚庢葷殑鏈熸湜E = sigma{C(n, i) * P(i) * i * n * d}錛宨 = 0 ... N銆?br>銆銆榪欎釜寮忓瓙鍒楀嚭鏉ュ悗鎬庝箞涔熸眰涓嶅嚭緇撴灉銆傛櫄涓奿mems鍛婅瘔浜嗘垜涓涓緢綆鍗曠殑鎺ㄥ鏂規硶銆傚浜庝竴涓晢搴楁潵璇達紝涓涓漢涓嶅幓鐨勬鐜囨槸(N - 1) / N錛岄偅涔圡涓漢閮戒笉鍘葷殑姒傜巼鏄?(N - 1) / N) ^ M錛岀敤1鍑忓幓榪欎釜緇撴灉灝辨槸鑲畾鑷沖皯鏈変漢鍘昏繖涓晢搴楃殑姒傜巼銆傜劧鍚庢葷殑鏈熸湜灝變箻浠涓晢搴楋紝鍐嶄箻浠ヨ禋閽辨暟n * d灝卞彲浠ヤ簡銆傚緢宸у錛屽洜涓轟粬鏄粠鍟嗗簵鐨勮搴︾洿鎺ヨ冭檻鐨勯棶棰橈紝鑰屼笉鑰冭檻鍟嗗簵鐨勪漢鏁幫紝榪欐牱灝變笉鐢ㄥ垪姒傜巼鍒嗗竷浜嗐?br>銆銆浣嗘槸涓婇潰鐨勫叕寮忓氨涓嶈兘鎺ㄥ鍑烘紜粨鏋滀簡涔堬紝鍚庢潵鍙堟帹浜嗕竴涓嬶紝鍙戠幇鏄彲浠ョ殑錛堢収鐫緇撴灉鐚? -!錛夈?br>銆銆鍏蜂綋鐨勬帹瀵煎緢楹葷儲錛屼絾鏄葷殑鏉ヨ鐢ㄥ埌浜嗙粍鍚堟暟瀛︾殑鍑犱釜鍏紡銆傞鍏?nbsp;k * C(n, k) = n * C(n - 1, k - 1)錛屽埄鐢ㄨ繖涓叕寮忔妸澶栭潰鐨刬娑堝幓銆傜劧鍚庢湁pascal閫掓帹寮忥細C(n, k) = C(n - 1, k) + C(n - 1, k - 1)銆傛垜浠垎鍒冭檻(i / N) ^ M鍓嶉潰鐨勭郴鏁幫紝鍙互鍙戠幇閮芥槸涓や釜浜岄」寮忕郴鏁扮浉涔樼殑鏂瑰紡銆傛妸鍏朵腑鐨勪竴涓埄鐢╬ascal鍏紡灞曞紑鍚庯紝鍑虹幇浜嗗艦濡侰(n, 0) - C(n, 1) + C(n, 2) - ...涔嬬被鐨勫紡瀛愶紝緇撴灉鏄?錛屾秷鍘諱簡銆傚墿涓嬬殑榪樻槸涓や釜浜岄」寮忕郴鏁扮殑涔樼Н錛屼笉榪囬兘鏄繖縐嶅艦寮忕殑錛欳(n, k) * C(k, r)錛屽畠絳変簬C(n, r) * C(n - 1, k - 1)銆傝繖鏍峰彉褰箣鍚庢湁涓涓叕鍏遍」灝卞彲浠ユ彁鍑哄幓浜嗭紝閲岄潰榪樻槸褰㈠(1 - 1) ^ n鐨勫艦寮忋傝繖鏍風粨鏋滃氨鏄?銆傚湪璁$畻涓嬩竴欏圭殑緋繪暟鐨勬椂鍊欙紝絎竴嬈″睍寮鍚庨噷闈㈡伆濂藉寘鍚簡鍓嶄竴欏圭殑緋繪暟錛岀洿鎺ュ氨鏄?娑堝幓浜嗭紝鐒跺悗緇х畫鍒╃敤涓婇潰鐨勬柟娉曞睍寮銆備腑闂存帹瀵肩殑榪囩▼涓繕闇瑕佹坊鍔犱竴浜涘間負0鐨勯」渚夸簬緇х畫鐨勬帹瀵箋?br>銆銆榪欎釜鏂規硶寰堥夯鐑︼紝涓嶈繃鎺ㄥ榪囩▼涓繕鏄敤鍒頒簡寰堝鐭ヨ瘑鐨勶紝灝卞綋澶嶄範浜? -!鍏跺疄榪欎釜鎺ㄥ瑕佷笉鏄煡閬撲簡鏈鍚庣殑鍏紡涔熶笉鏁㈡帹錛屽疄鍦ㄥお楹葷儲錛岀湅鏉ヨ繕鏄熀鏈姛嬈犵己鍟婏紝鑰屼笖綆楁鐜囩殑棰樼洰榪樻槸瑕佸緇冧範緇冧範銆傚彟澶栨敞鎰忔濈淮鐨勭伒媧繪э紝鍏跺疄綆鍗曞仛娉曚笉闅炬兂錛屼絾鏄渶寮濮嬭鍚夊ぇ鐗涜瀵間簡錛屽氨鐢ㄤ簡涓涓弗鏍肩殑鎺ㄥ鏂規硶錛岀嫭绔嬫濊冭繕鏄緢閲嶈鐨勩?br>
棰樼洰浠g爜錛?br>
2 #include <cmath>
3
4 int main()
5 {
6 double N, M, n, d;
7
8 while (scanf("%lf %lf %lf %lf", &N, &M, &n, &d) == 4)
9 printf("%.3lf\n", n * d * N * (1.0 - pow(1.0 - 1.0 / N, M)));
10
11 return 0;
12 }
13
]]>
銆愮畻娉曞垎鏋愩?br>銆銆鎰熻婊℃伓蹇冪殑涓涓鐩紝闇瑕佺柉鐙傜殑鎵捐寰嬨傞鍏堝鏄撶湅鍑鴻礬寰勬暟鏄竴涓粍鍚堟暟錛屽茍涓旀瘡涓灞傞兘鏄ā鍏驚鐜殑銆備絾鏄庢牱鎵懼埌灞傛暟錛堜篃灝辨槸鏈鐭礬寰勯暱搴︼級鍛紵鏈寮濮嬫兂寤虹珛鍧愭爣緋葷劧鍚庡埄鐢ㄥ嚑浣曟柟娉曠畻鍑烘潵錛屼絾鏄浣曟棤璁烘槸絎涘崱灝斿潗鏍囩郴榪樻槸鏋佸潗鏍囩郴鐨勫緩绔嬮兘鏄洶闅劇殑錛涚劧鍚庢兂瀛樺浘騫挎悳錛屽彂鐜扮┖闂翠笉澶熴傚悗鏉ュ彂鐜幫紝鎶婂浘欏烘椂閽堣漿90搴︼紝鍑虹幇浜嗕竴涓緢鏈夋剰鎬濈殑瑙勫緥銆備互鍘熺偣錛堟暟瀛椾負1錛変負涓績寤虹珛鍧愭爣緋伙紝涓嶈繃鍧愭爣鐨勯夊彇闇瑕佷竴浜涙妧宸с傚彲浠ョ湅鍑烘暟瀛楁槸涓灞傚眰鍒嗗竷鐨勶紝鍙杧宸﹁竟鐨勭偣鍧愭爣涓猴紙-2錛?錛夛紝浠ュ悗姣忓線宸﹀鍔犱竴灞傦紝妯潗鏍囧氨鍙樺寲2銆傚叾瀹炲拰鍘熺偣綰靛潗鏍囩浉鍚屼笖浣嶄簬鍏跺乏杈圭殑鐐規伆濂芥槸姣忎竴灞傛暟瀛楁渶澶х殑緇撶偣錛佽繖鏍峰彧瑕佺‘瀹氫簡榪欎釜鐐癸紝鍙互鎸夌収閫嗘椂閽堢殑欏哄簭渚濇緇欒繖涓灞傜殑鎵鏈夌偣鐨勫潗鏍囨帹鍑烘潵銆傝繖鏍鳳紝緇欏畾涓涓暟瀛楋紝鎴戜滑鍙互鏍規嵁姣忎竴灞傛渶澶х殑鏁板瓧鎺ㄥ嚭榪欎釜鏁扮殑鍧愭爣銆?br>銆銆鐜板湪鏈変簡鍧愭爣錛堝彲浠ョ湅鎴愭槸鏇煎搱欏垮潗鏍囷級錛屽氨鍙互鎺ㄦ祴璺緞浜嗐傛妸涓や釜鏁板瓧鐨勫潗鏍囨眰宸紝灝卞彲浠ョ湅鎴愭槸涓涓湪鍘熺偣浜嗐傚潗鏍囧拰璺緞鐨勫叧緋諱笉鏄緢濂芥壘錛屽啓浜?銆?琛屽彂鐜頒簡涓涓緢璇″紓鐨勮寰嬨傚厛鎶婂潗鏍囧寲鎴愭鐨勶紝鐒跺悗鍙戠幇x >= y鐨勬椂鍊欏氨鏄疌( (x + y) / 2, y)錛屽惁鍒欐槸C( y, (y - x) / 2)銆備箣鍚庡氨鏄珮綺懼害浜嗐?br>
棰樼洰浠g爜錛?br>
2 import java.math.*;
3
4 class point
5 {
6 int x, y;
7 public point(int x, int y)
8 {
9 this.x = x;
10 this.y = y;
11 }
12 }
13 class Main
14 {
15 public static void main(String[] args)
16 {
17 Scanner in = new Scanner(System.in);
18 int a, b, len;
19 BigInteger ans;
20 point pa, pb;
21
22 while (in.hasNext())
23 {
24 a = in.nextInt();
25 b = in.nextInt();
26 if (a == 0 && b == 0)
27 break;
28 pa = GetCoordinate(a);
29 pb = GetCoordinate(b);
30 pa.x = pb.x - pa.x;
31 pa.y = pb.y - pa.y;
32 pa.x = pa.x < 0 ? -pa.x : pa.x;
33 pa.y = pa.y < 0 ? -pa.y : pa.y;
34 if (pa.x >= pa.y)
35 {
36 len = (pa.x + pa.y) / 2;
37 ans = C(len, pa.y);
38 }
39 else
40 {
41 len = pa.y;
42 ans = C(len, (pa.y - pa.x) / 2);
43 }
44 System.out.print("There ");
45 if (ans.compareTo(BigInteger.ONE) == 0)
46 System.out.print("is 1 route");
47 else
48 System.out.print("are " + ans + " routes");
49 System.out.println(" of the shortest length " + len + ".");
50 }
51 }
52 static BigInteger C(int n, int k)
53 {
54 BigInteger ret = BigInteger.ONE;
55 if (k > n - k)
56 k = n - k;
57 for (int i = 1; i <= k; i++)
58 {
59 ret = ret.multiply(new BigInteger(new String(n - i + 1 + "")));
60 ret = ret.divide(new BigInteger(new String(i + "")));
61 }
62 return ret;
63 }
64 static point GetCoordinate(int n)
65 {
66 int[][] dir = new int[][]{{1, -1}, {2, 0}, {1, 1}, {-1, 1}, {-2, 0}, {-1, -1}};
67 int i = 0, j = 0, k = 0, tx, ty, cnt = 0, delta;
68 point p = new point(0, 0);
69
70 if (n == 1)
71 return p;
72 for (i = 2; i <= 1000; i++)
73 if ((3 * i * i - 3 * i + 1) >= n)
74 break;
75 delta = 3 * i * i - 3 * i + 1 - n;
76 i--;
77 tx = -2 * i;
78 ty = 0;
79 boolean flag = false;
80 for (j = 0; j < 6; j++)
81 {
82 for (k = 0; k < i; k++)
83 {
84 if (cnt == delta)
85 {
86 flag = true;
87 break;
88 }
89 cnt++;
90 tx += dir[j][0];
91 ty += dir[j][1];
92 }
93 if (flag)
94 break;
95 }
96 p.x = tx;
97 p.y = ty;
98
99 return p;
100 }
101 }
102
]]>
const int N = 10010;
int main()
{
int a[N], n, mod[N] = {0}, tmp = 0, len = 0, pos;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
scanf("%d", &a[i]);
if (len) continue;
tmp = (tmp + a[i]) % n;
if (tmp == 0)
{
len = i;
pos = 1;
}
if (mod[tmp])
{
len = i - mod[tmp];
pos = mod[tmp] + 1;
}
else
mod[tmp] = i;
}
printf("%d\n", len);
for (int i = 0; i < len; i++)
printf("%d\n", a[pos+i]);
return 0;
}
]]>
]]>
2 const int N = 12;
3
4 int p[N], ans;
5 long long gcd(long long a, long long b)
6 {
7 return b == 0 ? a : gcd(b, a % b);
8 }
9 void calc_sg(long long tol, int m, int dep, long long v, bool mark)
10 {
11 if (dep == m)
12 {
13 if (mark) ans -= tol / v;
14 else ans += tol / v;
15 return;
16 }
17 calc_sg(tol, m, dep + 1, v, mark);
18 if (v <= tol)
19 calc_sg(tol, m, dep + 1, v / gcd(v, p[dep]) * p[dep], mark ^ 1);
20 }
21
22 int main()
23 {
24 int T, m, n, a, g;
25
26 scanf("%d", &T);
27 while (T--)
28 {
29 g = 0;
30 bool mark = 1;
31 scanf("%d %d", &m, &n);
32 for (int i = 0; i < m; i++)
33 scanf("%d", &p[i]);
34 for (int i = 0; i < n; i++)
35 {
36 scanf("%d", &a);
37 if (!mark) continue;
38 ans = 0;
39 calc_sg(a, m, 0, 1, 0);
40 g ^= ans;
41 for (int j = 0; j < m; j++)
42 if (a % p[j] == 0)
43 {
44 mark = 0;
45 break;
46 }
47 }
48 if (!mark) puts("Xiao Hong");
49 else printf("%s\n", g ? "Xiao Hong" : "Xiao Gang");
50 }
51
52 return 0;
53 }
54
]]>
polya棰樼洰錛?br>HOJ 2084 The Colored Cubes
HOJ 2647 Megaminx
POJ 1286 Necklace of Beads
POJ 2409 Let it Bead
TOJ 2795 The Queen's New Necklaces
HDU 1812 Count the Tetris
UVa 11255 Necklace
POJ 2154 Color
POJ 2888 Magic Bracelet
UVa 10601 Cubes
NUAA 1110
]]>![]()
鍏朵腑A =(Ak-1 Ak-2 ... A1)錛孖鏄崟浣嶇煩闃點?br>鐒跺悗鏋勯犱竴涓猭 * 1鍒楀悜閲廱錛?br>![]()
榪欐牱錛孧 * b涔嬪悗b0鐨勫煎氨鏄痜(k)錛屼互姝ょ被鎺紝M ^ n * b涔嬪悗b0鐨勫煎氨鏄痜(k-1+n)錛岀畻娉曞鏉傚害O(k ^ 3 * logn)銆?br>
]]>
1.鎺掑垪緇勫悎涓庡鏂ュ師鐞?br>鎺掑垪緇勫悎閲岄潰鐨?涓噸瑕佺殑鍩烘湰鍘熺悊錛氬姞娉曞師鐞嗐佷箻娉曞師鐞嗐佸噺娉曞師鐞嗐侀櫎娉曞師鐞?br>鍓嶉潰涓や釜鏈涓哄熀鏈紝鍚庨潰涓や釜鏄牴鎹墠涓や釜媧劇敓鍑烘潵鐨勩備箻娉曞師鐞嗘湁鐨勬椂鍊欑殑搴旂敤寰堝閥濡欙紝鍙互浣滀負涓縐嶆墦寮鎬濊礬鐨勫姙娉曘?br>鍩烘湰鐨勬帓鍒楃粍鍚堜箣鍚庯紝鎺ヤ笅鏉ュ紩鍑轟簡澶氶噸闆嗐傚閲嶉泦鐨勬帓鍒楃粍鍚堟槸涓涓緢緇忓吀鐨勯棶棰橈紝鎬葷粨濡備笅錛?br>澶氶噸闆嗙殑鎺掑垪錛?br>銆銆鍏ㄦ帓鍒楃殑璇濆彧闇搴旂敤闄ゆ硶鍘熺悊灝卞彲浠ヤ簡銆俷涓厓绱犵殑澶氶噸闆嗙殑r鎺掑垪闇瑕佸埄鐢ㄦ寚鏁扮敓鎴愬嚱鏁版潵鍋氥?br>澶氶噸闆嗙殑緇勫悎錛?br>銆銆n涓厓绱犵殑澶氶噸闆嗙殑r緇勫悎錛屽鏋渞灝忎簬絳変簬浠諱綍涓涓厓绱犲彲閫夌殑涓暟錛岄偅涔堝氨褰掔粨涓虹粡鍏哥殑涓嶅畾鏂圭▼鐨勮В鏁伴棶棰橈紝鍙互鍒╃敤“闅旀澘娉?#8221;鏉ュ仛銆傜粨鏋滃氨鏄竴涓粍鍚堟暟銆傚鏋渞澶т簬鏌愪簺鍏冪礌鐨勫彲閫変釜鏁幫紝閭d箞涓縐嶆柟娉曟槸鍒╃敤瀹規枼鍘熺悊錛屼竴縐嶆柟娉曡繕鏄渚濋潬鐢熸垚鍑芥暟錛堢紪紼嬪簭鐨勬椂鍊欏彲浠ョ敤鍔ㄥ綊鍋氾級銆?br>濡傛灉鏄竴涓幆褰㈢殑鎺掑垪緇勫悎錛岄偅涔堥棶棰樺氨鍥伴毦璁稿錛岃鍒╃敤緗崲緹ゅ拰polya瀹氱悊銆?br>銆銆鍗曠函鐨勪緷闈犲洓欏瑰熀鏈師鐞嗘潵璁℃暟錛屾湁鐨勬椂鍊欎細鏄懼緱鍔涗笉浠庡績錛岃繖涓椂鍊欏氨闇瑕佸鏂ュ師鐞嗙殑甯姪銆傚鏂ュ師鐞嗙壒鍒傚悎瑙e喅鑻ュ共闄愬埗鏉′歡鐨勪氦銆佸茍闂錛屼篃鏄墦寮鎬濊礬鐨勪竴縐嶆柟娉曘?br>銆銆鍒╃敤瀹規枼鍘熺悊瑙e喅鐨勭粡鍏擱棶棰樻湁錛氶敊鎺掗棶棰橈紝甯︾姝綅緗殑鎺掑垪銆傜浣嶆帓鍒楁昏寰楃敤瀹規枼鍘熺悊瑙e喅鐨勪笉澶熶紭緹庯紝涓嶇煡閬撴湁娌℃湁鍙互緙栫▼鐨勬暟瀛︽柟娉曘傝繕鏈変竴涓洶鎯戠殑闂灝辨槸瀹規枼鍘熺悊鍜宮obius鍙嶆紨鐨勫叧緋伙紝閭d釜鍦版柟濂芥櫐娑┿傘?br>銆銆璺熸帓鍒楃粍鍚堢浉鍏崇殑榪樻湁灝辨槸鐢熸垚鎺掑垪鍜岀粍鍚堛傜敓鎴愭帓鍒楀埄鐢ㄩ偅涓粈涔堝瓧鍏稿簭娉曞ソ鍍忚凍澶熶簡錛岀紪紼嬪ソ瀹炵幇銆傜敓鎴愮粍鍚堟柟娉曠被浼箋?br>
2.浜岄」寮忓畾鐞?br>鏈夊緢澶氬叕寮忥紝鐢ㄧ殑鏃跺欏彲浠ョ幇鏌ャ傜粓浜庣煡閬撲簡涓夎褰㈡暟鍘熸潵璺熸帓鍒楃粍鍚堟湁鍏籌紝鑰屼笖鏄竴涓緢綆媧佺殑鍏紡銆?br>寰堝鍏紡鐨勬帹瀵肩敤鐨勬濇兂寰堝銆傛湁涓涓緢濂界殑鎬濇兂灝辨槸鎶?1 + x) ^ n鍒╃敤浜岄」寮忓畾鐞嗗睍寮錛岀劧鍚庢眰瀵箋佹眰縐垎錛屽眳鐒跺彲浠ュ鍑哄緢澶氫笉鍙濊鐨勫叕寮忋?br>榪樻湁涓涓緢閲嶈鐨勫畾鐞嗗氨鏄痯ascal瀹氱悊錛宲ascal閫掓帹寮忓緢鏈夌敤錛堝睍寮鍚庢湁涓ょ褰㈠紡錛屼竴縐嶆槸涓婁笅闄愬潎涓嶅畾錛屼竴縐嶆槸涓嬮檺涓嶅畾錛夛紝鍙互瑙e喅寰堝緇勫悎鏁扮殑姹傚拰闂銆?br>鍙﹀涓涓噸瑕佺殑瀹氱悊灝辨槸鐗涢】浜岄」寮忓畾鐞嗭紝鍦ㄧ敓鎴愬嚱鏁頒腑搴旂敤騫挎硾錛屽彲灝辨槸鎺ㄥ璧鋒潵鏈夌偣綣併?br>
3.閫掓帹鍏崇郴鍜岀敓鎴愬嚱鏁?br>銆銆姹傝В綰挎ч掓帹鍏崇郴鐨勭壒寰佹柟紼嬬殑鏂規硶榪樻槸鏈変竴瀹氫環鍊肩殑錛屼絾鏄紪紼嬩笉閫傜敤銆俷瑙g嚎鎬ч綈嬈¢掓帹鏂圭▼鏈夌煩闃佃В娉曘傜◢寰鏉傜偣鐨勯掓帹鍏崇郴錛堥潪綰挎э級錛岀壒寰佹柟紼嬪氨涓嶅鐢ㄤ簡錛屽繀欏葷キ鍑虹敓鎴愬嚱鏁拌繖涓湁鍔涚殑姝﹀櫒銆傛劅瑙夌敓鎴愬嚱鏁板疄鍦ㄦ槸澶紭緹庛佸お寮哄ぇ浜嗐傜敓鎴愬嚱鏁扮殑鍏抽敭灝辨槸瑕佹妸澶氶」寮忔媶鍒嗘垚(1-rx)^n榪欑褰㈠紡錛岃繖鏍峰氨鍙互鍒╃敤鐗涢】浜岄」寮忓畾鐞嗗睍寮浜嗐?br>銆銆鍦ㄧ壒孌婅鏁板簭鍒楅噷闈㈡彁鍒頒簡鐩掕鐞冮棶棰樸傚皢p涓笉鍚岀殑鐞冩斁鍏涓浉鍚岀殑鐩掑瓙錛堟瘡涓洅瀛愰潪絀猴級鐨勬柟娉曟暟鏄浜岀被Stirling鏁癝(p, k)錛涘皢p涓浉鍚岀殑鐞冩斁鍏涓浉鍚岀殑鐩掑瓙錛堟瘡涓洅瀛愰潪絀猴級鐨勬柟娉曟暟鏄垎鎷嗘暟錛屽彲浠ュ綊緇撲負鏁存暟鍒掑垎闂錛岀敤鍔ㄦ佽鍒掓眰瑙o紱灝唒涓笉鍚岀殑鐩掑瓙鏀懼叆涓嶅悓鐨刱涓洅瀛愬茍涓旀瘡涓潪絀虹殑鏂規硶鏁頒負k! * S(p, k)銆?br>銆銆鏈夊嚑涓緢緇忓吀鐨勯掓帹鍏崇郴錛氭枑娉㈤偅濂戞暟鍒椼丆atalan鏁幫紙鍑犵緇忓吀鐨勫艦寮忥細涓夎鍓栧垎鏁般佷簩鍙夌敓鎴愭爲涓暟銆?1-1搴忓垪銆佸姞鎷彿搴忓垪絳夌瓑錛夈丼tirling鏁幫紙涓ょ錛岀浜岀姣旇緝甯哥敤錛夈佹眽璇哄銆乶涓渾鍒囧壊騫抽潰鏁般乶鏉$洿綰縦涓氦鐐瑰垏鍓插鉤闈㈡暟絳夌瓑銆傛澶栵紝鏍艱礬寰勪腑鎻愬埌鐨勫鉤縐匯佸弽灝勫拰涓涓瀵瑰簲榪欎笁縐嶅垎鏋愰棶棰樼殑鏂規硶涔熷緢鍊煎緱鍊熼壌銆?br>
4.polya瀹氱悊