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
![](https://i-blog.csdnimg.cn/blog_migrate/cbef093dcc044b2793832001e2365e43.gif)
11
using
namespace
std;
12
unsigned
long
count
=
0
;
13
unsigned
long
F(
int
buf[],
int
start );
14
unsigned
long
T[
20
];
15
![](https://i-blog.csdnimg.cn/blog_migrate/cbef093dcc044b2793832001e2365e43.gif)
16
void
CaculateT(
void
)
17
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/2f88ce130b654eb5dc6788e02dbcfc90.gif)
{
18
int i;
19
T[1] = 1;
20![](https://i-blog.csdnimg.cn/blog_migrate/df37983f39daa189b8c814e01a6a9011.gif)
21
for(i=2;i<10;i++)
22![ExpandedSubBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/f70a0fde2b51b7dd92a70e712e540cf6.gif)
{
23
T[i] = pow(10,(i-1)) + 10 * T[i-1];
24
}
25
}
26
![](https://i-blog.csdnimg.cn/blog_migrate/cbef093dcc044b2793832001e2365e43.gif)
27
int
_tmain(
int
argc, _TCHAR
*
argv[])
28
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/2f88ce130b654eb5dc6788e02dbcfc90.gif)
{
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![](https://i-blog.csdnimg.cn/blog_migrate/df37983f39daa189b8c814e01a6a9011.gif)
37
do
38![ExpandedSubBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/f70a0fde2b51b7dd92a70e712e540cf6.gif)
{
39
i=1;
40
temp = M;
41
while( temp > 0 )
42![ExpandedSubBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/f70a0fde2b51b7dd92a70e712e540cf6.gif)
{
43
buf[i++] = temp % 10;
44
temp /= 10;
45
}
46![](https://i-blog.csdnimg.cn/blog_migrate/df37983f39daa189b8c814e01a6a9011.gif)
47
cout<<M<<"->"<<F(buf, i-1)<<" ";
48
if(M%5==0)
49
cout<<endl;
50
}while(M++<199981);
51![](https://i-blog.csdnimg.cn/blog_migrate/df37983f39daa189b8c814e01a6a9011.gif)
52
end = GetTickCount();
53
usetime = start - end;
54
cout<<"use "<<usetime<<"milliseconds"<<endl;
55![](https://i-blog.csdnimg.cn/blog_migrate/df37983f39daa189b8c814e01a6a9011.gif)
56
cout<<M-1;
57![](https://i-blog.csdnimg.cn/blog_migrate/df37983f39daa189b8c814e01a6a9011.gif)
58![](https://i-blog.csdnimg.cn/blog_migrate/df37983f39daa189b8c814e01a6a9011.gif)
59
return 0;
60![](https://i-blog.csdnimg.cn/blog_migrate/df37983f39daa189b8c814e01a6a9011.gif)
61![](https://i-blog.csdnimg.cn/blog_migrate/df37983f39daa189b8c814e01a6a9011.gif)
62
}
63
![](https://i-blog.csdnimg.cn/blog_migrate/cbef093dcc044b2793832001e2365e43.gif)
64
unsigned
long
F(
int
buf[],
int
start)
65
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/2f88ce130b654eb5dc6788e02dbcfc90.gif)
{
66![](https://i-blog.csdnimg.cn/blog_migrate/df37983f39daa189b8c814e01a6a9011.gif)
67
unsigned long temp = 0;
68
if(start==1)
69![ExpandedSubBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/f70a0fde2b51b7dd92a70e712e540cf6.gif)
{
70
if(buf[start] == 0)
71
return 0;
72
else
73
return 1;
74
}
75![](https://i-blog.csdnimg.cn/blog_migrate/df37983f39daa189b8c814e01a6a9011.gif)
76
if( buf[start] == 1)
77![ExpandedSubBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/f70a0fde2b51b7dd92a70e712e540cf6.gif)
{
78
temp = 0;
79
for(int i=start-1; i>0; i--)
80
temp = temp * 10 + buf[i];
81![](https://i-blog.csdnimg.cn/blog_migrate/df37983f39daa189b8c814e01a6a9011.gif)
82
return ( T[start-1] + temp + 1 + F(buf, start - 1) );
83
}
84
else if(buf[start] == 0)
85![ExpandedSubBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/f70a0fde2b51b7dd92a70e712e540cf6.gif)
{
86
return F(buf, start - 1);
87
}
88
else
89![ExpandedSubBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/f70a0fde2b51b7dd92a70e712e540cf6.gif)
{
90
return ( buf[start] * T[start-1] + pow(10, start - 1) + F(buf, start - 1) );
91
}
92![](https://i-blog.csdnimg.cn/blog_migrate/df37983f39daa189b8c814e01a6a9011.gif)
93
}
转载于:https://www.cnblogs.com/gredswsh/archive/2010/09/16/1827953.html