DreamAngel
如果你希望成功,以恒心为良友,以经验为参谋,以小心为兄弟,以希望为哨兵。
BlogJava
首页
新随笔
联系
聚合
管理
随笔 - 147 文章 - 71 trackbacks - 0
<
2024年11月
>
日
一
二
三
四
五
六
27
28
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
我的其它Blog:
www.cppblog.com/dreamangel/
blog.csdn.net/fjnu_angel/
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔分类
(146)
ACM(28)
ajax(9)
eclipse(3)
Game(6)
Hibernate(1)
java(20)
javascript(19)
jfreechart(3)
jfreereport(1)
JSP(16)
linux(4)
log4j(3)
Spring(1)
SQL(7)
Struts(3)
Tomcat(3)
其它(12)
正则表达式(3)
网络管理(2)
软件设计(2)
随笔档案
(147)
2015年4月 (1)
2013年9月 (2)
2013年8月 (1)
2013年3月 (1)
2012年8月 (2)
2012年7月 (1)
2012年6月 (1)
2012年5月 (2)
2012年3月 (2)
2012年2月 (1)
2012年1月 (2)
2011年12月 (3)
2011年11月 (6)
2011年10月 (6)
2011年9月 (1)
2010年5月 (1)
2010年4月 (1)
2010年1月 (1)
2009年12月 (3)
2009年11月 (7)
2009年10月 (7)
2009年9月 (9)
2009年8月 (6)
2009年7月 (17)
2009年6月 (8)
2009年5月 (8)
2009年4月 (4)
2009年3月 (17)
2009年2月 (16)
2009年1月 (10)
文章分类
(28)
foj(3)
poj(15)
spoj(9)
zoj(1)
文章档案
(28)
2010年9月 (2)
2010年7月 (1)
2009年9月 (14)
2009年8月 (11)
喜欢的Blog
BeanSoft
fuhoujun
yoyo
不朽的飞翔
乐在其中
宇天
我和hacker有个约会
银河使者
阿蜜果
搜索
最新评论
1. re: MyEclipse6.5 注册码生成方法,自己输入用户名[未登录]
5656
--lk
2. re: MyEclipse6.5 注册码生成方法,自己输入用户名
henhaoyong
--wuxiaoming
3. re: MyEclipse6.5 注册码生成方法,自己输入用户名
wuxiaoming
--wuxiaoming
4. re: js获得table单元格的信息
飒沓
--阿尔
5. re: log4j:ERROR Failed to rename错误解决办法[未登录]
谢谢楼主,问题解决!
--bobo
阅读排行榜
1. 用户权限管理设计(33576)
2. 关于路由器设置DI-504的401 Unauthorized authorization required(19069)
3. ubuntu下gcc的安装与使用(18738)
4. Proguard使用教程(12590)
5. ExtJS的tbar布局(10570)
评论排行榜
1. MyEclipse6.5 注册码生成方法,自己输入用户名(14)
2. 用户权限管理设计(9)
3. OA系统权限管理设计方案(7)
4. 判断一个月有多少天(正确的方法)(4)
5. 泰讯软件数据库笔试题目(SQL Server 2000版)(3)
zoj2095(Divisor Summation)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2095
【题意简述】
求约数和。
【分析】
暴力求解必然超时。假设n可以被分解为a*b,则div(n)里肯定包含a+b;只要从1到(int)n^1/2分解为两约数的积的形式,然后加上分解出来的约数,最后再减去本身就是最终的结果了。
import
java.util.
*
;
import
java.io.
*
;
public
class
zoj_2095
{
public
static
void
main(String rgs[])
throws
Exception
{
BufferedReader stdin
=
new
BufferedReader(
new
InputStreamReader(System.in));
int
[] a
=
new
int
[
500001
];
int
i,j,n,t,k
=
(
int
)(Math.sqrt(
500000
));
for
(i
=
1
;i
<=
k;i
++
)
{
for
(j
=
i;j
<=
500000
/
i;j
++
)
a[i
*
j]
+=
(i
+
j);
//
分解为两约数积,同时在记录n约数和的a[n]中加上(i+j)
a[i
*
i]
-=
i;
//
当然别忘了算了两次的同一个值
只有平方数才有
}
String line
=
stdin.readLine();
t
=
Integer.parseInt(line);
for
(i
=
0
;i
<
t;i
++
)
{
line
=
stdin.readLine();
n
=
Integer.parseInt(line);
System.out.println(a[n]
-
n);
}
}
}
posted on 2009-08-28 10:44
飞翔天使
阅读(466)
评论(0)
编辑
收藏
所属分类:
zoj
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理