C++心路历程
C++博客
首页
新随笔
新文章
联系
聚合
管理
posts - 33, comments - 25, trackbacks - 0
ZOJ 1210 解题报告
大浮点数运算.
Code
1
#include
"
BigInteger.h
"
2
#include
<
iostream
>
3
using
namespace
std;
4
5
class
BigDecimal
6
{
7
private
:
8
BigInteger divide;
9
BigInteger divided;
10
int
digit_count;
11
12
BigInteger Divide()
13
{
14
if
(divide
==
BigInteger(
0
))
15
return
BigInteger(
0
);
16
BigInteger result;
17
18
BigInteger temp(
0
), index(
0
), rest(
0
), zero(
0
);
19
BigInteger TEN(
10
);
20
int
end
=
-
1
;
21
int
start
=
divide.Length()
-
1
;
22
vector
<
int
>
quotients;
23
24
while
(rest
!=
zero
||
start
>
end)
25
{
26
temp
=
rest
*
TEN;
27
digit_count
=
start
>
end
?
digit_count : digit_count
+
1
;
28
temp
=
start
>
end
?
temp
+
BigInteger((
int
)(divide[start])) : temp;
29
if
(start
<=
end
&&
temp
<
divided)
30
{
31
quotients.push_back(
0
);
32
}
33
while
(temp
<
divided)
34
{
35
--
start;
36
temp
=
start
>
end
?
temp
*
TEN
+
BigInteger((
int
)(divide[start])) : temp
*
TEN;
37
digit_count
=
start
>
end
?
digit_count : digit_count
+
1
;
38
if
(start
<=
end
&&
temp
<
divided)
39
{
40
quotients.push_back(
0
);
41
}
42
}
43
int
quotient
=
0
;
44
rest
=
temp;
45
while
(rest
>=
divided)
46
{
47
rest
=
rest
-
divided;
48
++
quotient;
49
}
50
quotients.push_back(quotient);
51
--
start;
52
}
53
54
string
r;
55
vector
<
int
>
::iterator i_end
=
quotients.end();
56
for
(vector
<
int
>
::iterator ite
=
quotients.begin(); ite
!=
i_end;
++
ite)
57
{
58
r
+=
(
char
)((
*
ite)
+
'
0
'
);
59
}
60
return
BigInteger(r);
61
}
62
63
public
:
64
BigDecimal()
65
{
66
digit_count
=
0
;
67
divide
=
0
;
68
divided
=
1
;
69
}
70
71
BigDecimal(BigInteger a, BigInteger b)
72
{
73
digit_count
=
0
;
74
divide
=
a;
75
divided
=
b;
76
}
77
78
friend ostream
&
operator
<<
(ostream
&
os, BigDecimal
&
decimal
)
79
{
80
BigInteger result
=
decimal
.Divide();
81
int
length
=
result.Length();
82
int
copy_digit_count
=
decimal
.digit_count;
83
if
(copy_digit_count
>=
length)
84
os
<<
"
0.
"
;
85
os
<<
result;
86
return
os;
87
}
88
}
;
89
90
int
_tmain(
int
argc, _TCHAR
*
argv[])
91
{
92
BigInteger a(
1
), b;
93
cout
<<
"
Problem 4 by team x
"
<<
endl;
94
while
(cin
>>
b)
95
{
96
cout
<<
endl;
97
cout
<<
"
1 /
"
<<
b
<<
"
=
"
<<
endl;
98
BigDecimal bd
=
BigDecimal(a, b);
99
cout
<<
bd
<<
endl;
100
}
101
cout
<<
"
End of problem 4 by team x
"
<<
endl;
102
return
0
;
103
}
104
105
posted on 2009-03-31 21:28
肖羽思
阅读(487)
评论(2)
编辑
收藏
引用
所属分类:
ZOJ
FeedBack:
#
re: ZOJ 1210 解题报告
2009-04-03 09:00 |
Ard
能发一下你的...头文件...不是这样一来我看不懂.....我刚刚来这博客的.....想学好一点C++ 为后面学习JAVA打下良好的基础!
回复
更多评论
#
re: ZOJ 1210 解题报告
2009-04-03 10:46 |
肖羽思
头文件见我另一篇随笔:
http://www.cppblog.com/Yusi-Xiao/archive/2009/03/26/77988.aspx
@Ard
回复
更多评论
刷新评论列表
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
ZOJ 1813 解题报告
ZOJ 1406 解题报告
ZOJ 1350 解题报告
ZOJ 1249 解题思路
ZOJ 1151 解题报告
ZOJ 1113 解题报告
ZOJ 1059 解题报告
ZOJ 1057 解题报告
ZOJ 1210 解题报告
ZOJ 1160 解题报告
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
<
2009年4月
>
日
一
二
三
四
五
六
29
30
31
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
1
2
3
4
5
6
7
8
9
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(3)
给我留言
查看公开留言
查看私人留言
随笔分类
POJ(4)
ZOJ(29)
随笔档案
2009年4月 (10)
2009年3月 (23)
文章分类
POJ(1)
ZOJ(1)
文章档案
2009年3月 (2)
搜索
最新评论
1. re: ZOJ 1059 解题报告
让人
--让人
2. re: POJ 1753 解题报告
LZ的位运算计算法果然比我的普通方法快很多啊!!!
感谢分享!!!
--hacker003
3. re: POJ 1753 解题报告
这算法好像有冗余吧
FlipPiece(6585,0)=6570之后就不用FlipPiece(6570,0)了吧
--yangyh
4. re: POJ 1517 解题报告
这样的话不是每一次都要重复计算阶乘的么?很浪费时间的。。。。
--WayneWu
5. re: POJ 2965 解题报告
@Tanky Woo
你说的不对,你根本没看楼主的算法,结果必定为1
--刘灏
阅读排行榜
1. POJ 1753 解题报告(4998)
2. POJ 2965 解题报告(3721)
3. ZOJ 1204 解题报告(2128)
4. ZOJ 1004 解题报告(1901)
5. ZOJ 1091 解题报告(1317)
评论排行榜
1. POJ 1753 解题报告(8)
2. POJ 2965 解题报告(8)
3. ZOJ 1004 解题报告(2)
4. ZOJ 1210 解题报告(2)
5. ZOJ 1059 解题报告(1)