為生存而奔跑
::
首頁
::
聯系
::
聚合
::
管理
271 Posts :: 0 Stories :: 58 Comments :: 0 Trackbacks
留言簿
(5)
給我留言
查看公開留言
查看私人留言
我參與的團隊
隨筆分類
Algorithm(73)
C#(19)
Design Pattern(16)
Effective STL / C++ (12)
Information Retrival / Data Mining(13)
Java(25)
Linux kernel(2)
MFC(16)
Python(5)
TopCoder(1)
Ubuntu&Linux(56)
技術(12)
無聊(2)
雜(22)
隨筆檔案
2011年5月 (1)
2011年4月 (6)
2011年3月 (21)
2011年2月 (9)
2011年1月 (12)
2010年12月 (2)
2010年11月 (3)
2010年10月 (6)
2010年8月 (13)
2010年7月 (11)
2010年6月 (7)
2010年5月 (21)
2010年4月 (15)
2010年3月 (16)
2010年1月 (5)
2009年12月 (18)
2009年11月 (18)
2009年10月 (19)
2009年9月 (8)
2009年8月 (42)
2009年7月 (15)
2009年4月 (3)
相冊
Girl
搜索
積分與排名
積分 - 328591
排名 - 74
最新評論
1.?re: Invoke與BeginInvoke
講得很好,清晰明了
--YJJ
2.?re: Invoke與BeginInvoke
講的這么好, 為啥沒有人頂呢
--zhouandke
3.?re: 數組分割問題
轉載請注明
--呵呵
4.?re: HDU 3415 單調隊列
話說,sum數組為什么只開10W就能過,如果n=100000,k=100000,明顯要開20W啊
--KissLL
5.?re: GDB 單步調試
文章太強大了。
--kangear
閱讀排行榜
1.?GDB 單步調試(33343)
2.?Emacs教程(20830)
3.?解決“windows無法連接到選定網絡 網絡可能不在區域中”(11475)
4.?Invoke與BeginInvoke(9595)
5.? Eclipse下搭建SWT開發環境(8009)
評論排行榜
1.?C/C++沒有數組(12)
2.?HDU 3415 單調隊列(8)
3.?Ubuntu Linux常見中文輸入法匯總(7)
4.?word畫圖里自選圖形里面的連接符不能用(5)
5.?<編程之美>數組分割問題(3)
【矩陣問題】PKU 3070
pku 3070
題目要求計算Fibonacci數列的第n項最后4位。因為n可以很大(0 ≤
n
≤ 1,000,000,000)。因此直接計算在時限內是不可能的(有多個case)。題目還給出了計算的方法:表示成矩陣連乘的形式為
求第n項的后4位,相當于求第n項模10000的余數。而矩陣的乘法滿足邊乘邊模。矩陣乘法還滿足結合律,所以可以先計算出上面的一個矩陣的2的冪次方的值,記錄下來。然后對于每一個n,將它表示成2進制。如當n=5時,只需計算一次矩陣乘法:1次方乘以4次方。當n=1000000000時最多只需計算29次矩陣乘法2^29 = 536870912)
#include
<
iostream
>
#include
<
algorithm
>
#include
<
string
>
#include
<
vector
>
#include
<
cmath
>
#include
<
map
>
using
namespace
std;
int
m[
31
][
4
],fact[
31
];
int
n;
void
init()
{
fact[
1
]
=
1
;
m[
1
][
0
]
=
1
; m[
1
][
1
]
=
1
; m[
1
][
2
]
=
1
; m[
1
][
3
]
=
0
;
for
(
int
i
=
2
;i
<=
30
;i
++
)
{
m[i][
0
]
=
(m[i
-
1
][
0
]
*
m[i
-
1
][
0
]
+
m[i
-
1
][
1
]
*
m[i
-
1
][
2
])
%
10000
;
m[i][
1
]
=
(m[i
-
1
][
0
]
*
m[i
-
1
][
1
]
+
m[i
-
1
][
1
]
*
m[i
-
1
][
3
])
%
10000
;
m[i][
2
]
=
(m[i
-
1
][
2
]
*
m[i
-
1
][
0
]
+
m[i
-
1
][
3
]
*
m[i
-
1
][
2
])
%
10000
;
m[i][
3
]
=
(m[i
-
1
][
2
]
*
m[i
-
1
][
1
]
+
m[i
-
1
][
3
]
*
m[i
-
1
][
3
])
%
10000
;
fact[i]
=
fact[i
-
1
]
*
2
;
}
}
void
solve()
{
bool
vis[
31
]
=
{
0
}
;
//
對n表示成2進制
for
(
int
i
=
30
;i
>
0
;i
--
)
if
(n
>=
fact[i])
{
n
-=
fact[i];
vis[i]
=
1
;
}
int
res[
4
]
=
{
1
,
0
,
0
,
1
}
;
//
單位矩陣
int
tmp[
4
];
for
(
int
i
=
1
;i
<=
30
;i
++
)
{
if
(vis[i])
{
tmp[
0
]
=
(res[
0
]
*
m[i][
0
]
+
res[
1
]
*
m[i][
2
])
%
10000
;
tmp[
1
]
=
(res[
0
]
*
m[i][
1
]
+
res[
1
]
*
m[i][
3
])
%
10000
;
tmp[
2
]
=
(res[
2
]
*
m[i][
0
]
+
res[
3
]
*
m[i][
2
])
%
10000
;
tmp[
3
]
=
(res[
2
]
*
m[i][
1
]
+
res[
3
]
*
m[i][
3
])
%
10000
;
for
(
int
j
=
0
;j
<
4
;j
++
)
res[j]
=
tmp[j];
}
}
printf(
"
%d\n
"
,res[
1
]);
}
int
main()
{
init();
while
(scanf(
"
%d
"
,
&
n)
!=
EOF
&&
n
!=-
1
)
{
solve();
}
}
posted on 2009-08-17 10:57
baby-fly
閱讀(259)
評論(0)
編輯
收藏
引用
所屬分類:
Algorithm
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
二分搜索 找上下界
算法導論上的歸并排序
PKU 2184 dp
PKU 2392 多重背包
PKU 2823 Sliding Window 單調隊列
HDU 3415 單調隊列
t
CRecordSet
KMP字符串模式匹配詳解
HDU 3450 樹狀數組 離散化
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Copyright @ baby-fly
Powered by:
.Text
and
ASP.NET
Theme by:
.NET Monster
久久久久久久久久久免费精品
|
日韩人妻无码一区二区三区久久
|
欧美亚洲国产精品久久
|
久久人人爽人人爽人人片AV东京热
|
亚洲欧美另类日本久久国产真实乱对白
|
久久久久亚洲AV片无码下载蜜桃
|
97久久超碰成人精品网站
|
国产成人香蕉久久久久
|
久久91精品国产91
|
99精品国产在热久久
|
久久精品国产精品亚洲人人
|
久久婷婷五月综合色奶水99啪
|
久久国产视屏
|
99久久99久久精品免费看蜜桃
|
亚洲AⅤ优女AV综合久久久
|
久久综合综合久久97色
|
久久AV高清无码
|
久久精品国产亚洲av日韩
|
亚洲精品无码久久久久去q
|
久久久久99这里有精品10
|
国产精品99久久久精品无码
|
日本精品久久久久影院日本
|
国产亚洲欧美精品久久久
|
国内精品久久久久影院老司
|
国产精品xxxx国产喷水亚洲国产精品无码久久一区
|
久久只有这精品99
|
嫩草影院久久国产精品
|
性色欲网站人妻丰满中文久久不卡
|
久久久久成人精品无码
|
一本色道久久88综合日韩精品
|
久久青青草原国产精品免费
|
影音先锋女人AV鲁色资源网久久
|
久久综合九色综合久99
|
国内精品久久久久影院网站
|
精品蜜臀久久久久99网站
|
狠狠色婷婷久久综合频道日韩
|
人人狠狠综合久久亚洲
|
亚洲一级Av无码毛片久久精品
|
久久久久久极精品久久久
|
欧美午夜精品久久久久久浪潮
|
色天使久久综合网天天
|