froster
C++研究
C++博客
首页
新随笔
联系
聚合
管理
随笔 - 1 文章 - 0 trackbacks - 0
<
2025年5月
>
日
一
二
三
四
五
六
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
给我留言
查看公开留言
查看私人留言
随笔档案
2005年12月 (1)
搜索
最新评论
2005年12月4日
我对google的一道面试题的程序实现(不包括数字查找算法)
1
//
MyCountOne.cpp : 定义控制台应用程序的入口点。
2
//
3
4
#include
"
stdafx.h
"
5
#include
<
iostream
>
6
#include
<
string
>
7
#include
<
math.h
>
8
#include
<
windows.h
>
9
#include
<
ctime
>
10
11
using
namespace
std;
12
unsigned
long
count
=
0
;
13
unsigned
long
F(
int
buf[],
int
start );
14
unsigned
long
T[
20
];
15
16
void
CaculateT(
void
)
17
{
18
int
i;
19
T[
1
]
=
1
;
20
21
for
(i
=
2
;i
<
10
;i
++
)
22
{
23
T[i]
=
pow(
10
,(i
-
1
))
+
10
*
T[i
-
1
];
24
}
25
}
26
27
int
_tmain(
int
argc, _TCHAR
*
argv[])
28
{
29
unsigned
long
temp, M
=
199900
;
30
int
i;
31
int
buf[
20
];
32
DWORD start, end, usetime;
33
start
=
GetTickCount();
34
35
CaculateT();
36
37
do
38
{
39
i
=
1
;
40
temp
=
M;
41
while
( temp
>
0
)
42
{
43
buf[i
++
]
=
temp
%
10
;
44
temp
/=
10
;
45
}
46
47
cout
<<
M
<<
"
->
"
<<
F(buf, i
-
1
)
<<
"
"
;
48
if
(M
%
5
==
0
)
49
cout
<<
endl;
50
}
while
(M
++<
199981
);
51
52
end
=
GetTickCount();
53
usetime
=
start
-
end;
54
cout
<<
"
use
"
<<
usetime
<<
"
milliseconds
"
<<
endl;
55
56
cout
<<
M
-
1
;
57
58
59
return
0
;
60
61
62
}
63
64
unsigned
long
F(
int
buf[],
int
start)
65
{
66
67
unsigned
long
temp
=
0
;
68
if
(start
==
1
)
69
{
70
if
(buf[start]
==
0
)
71
return
0
;
72
else
73
return
1
;
74
}
75
76
if
( buf[start]
==
1
)
77
{
78
temp
=
0
;
79
for
(
int
i
=
start
-
1
; i
>
0
; i
--
)
80
temp
=
temp
*
10
+
buf[i];
81
82
return
( T[start
-
1
]
+
temp
+
1
+
F(buf, start
-
1
) );
83
}
84
else
if
(buf[start]
==
0
)
85
{
86
return
F(buf, start
-
1
);
87
}
88
else
89
{
90
return
( buf[start]
*
T[start
-
1
]
+
pow(
10
, start
-
1
)
+
F(buf, start
-
1
) );
91
}
92
93
}
posted @
2005-12-04 12:16
froster 阅读(246) |
评论 (0)
|
编辑
收藏
仅列出标题