糯米
TI DaVinci, gstreamer, ffmpeg
随笔 - 167, 文章 - 0, 评论 - 47, 引用 - 0
数据加载中……
POJ 1142 Smith Numbers 数字游戏
题目大意:
有个叫smith的人,闲得蛋疼,做了如下定义:
如果一个数分解的质因数的所有位数的和加在一起等于该数字的所有位数的和,则这个数是“smith数”。
比如:
4937775= 3*5*5*65837
4+9+3+7+7+7+5= 42
3+5+5+6+5+8+3+7=42
则4937775是“smith数”。
另外:素数不是“smith数”
给出一个数字,求出比该数字大的数中最小的“smith数”。
思路:
按照常规方法,从2一直向上扫描,遇到能除的就除,求出数字的质因数。
但要注意,如果扫到大于该数字的平方,就没必要继续扫了,一定是素数。没加这个就是TLE。
另外,如果现有的和已经超过了最大的可能和,也没必要继续扫了。
#include
<
stdio.h
>
#include
<
math.h
>
__inline
int
digit_sum(
int
val)
{
int
i;
for
(i
=
0
; val; val
/=
10
)
i
+=
val
%
10
;
return
i;
}
__inline
int
is_smith(
int
val)
{
int
i, fs, max_sum, left, sum, sq;
max_sum
=
digit_sum(val);
sum
=
0
;
left
=
val;
sq
=
(
int
)sqrt((
float
)left);
for
(i
=
2
; i
<=
sq; i
++
)
{
if
(left
%
i)
continue
;
fs
=
digit_sum(i);
while
(
!
(left
%
i))
{
sum
+=
fs;
left
/=
i;
}
if
(left
==
1
)
return
sum
==
max_sum;
if
(sum
>
max_sum)
return
0
;
sq
=
(
int
)sqrt((
float
)left);
}
return
sum
&&
digit_sum(left)
+
sum
==
max_sum;
}
int
main()
{
int
j, i, val;
while
(
1
)
{
scanf(
"
%d
"
,
&
val);
if
(
!
val)
break
;
for
(val
++
;
!
is_smith(val); val
++
);
printf(
"
%d\n
"
, val);
}
return
0
;
}
posted on 2010-02-27 15:29
糯米
阅读(863)
评论(0)
编辑
收藏
引用
所属分类:
POJ
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
POJ 3123 Ticket to Ride 高效解法
POJ 3123 Ticket to Ride 动态规划+Minimal Steiner Tree
Minimal Steiner Tree 简介
POJ 3122 Pie 二分
POJ 3121 The SetStack Computer 哈希
POJ 3120 Sudoku 搜索
POJ 3156 Interconnect 图论+数论
POJ 3155 Hard Life 最大密度子图
POJ 3154 Graveyard 模拟
POJ 3150 Cellular Automaton 矩阵乘法+二分
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 糯米
导航
管理
随笔分类
Algorithm(9)
(rss)
Linux(6)
(rss)
Lisp(4)
(rss)
Misc(13)
(rss)
Perl(3)
(rss)
POJ(126)
(rss)
Python(1)
(rss)
Links
ELinux
Unix Stackexchange
最新评论
1. re: POJ 2374 Fence Obstacle Course 线段树+动态规划
@CWQBUPT
因为你缺少了二分的过程,线段树查找O(logn),而你的查找O(n)
--hez2010
2. re: lisp let,let*
写的很详细,有点理解了。原来 let* 会把上一个表达式的计算结果带到下一个计算结果上面去:)
--creamidea
3. re: [转]Stairway to Heaven 歌词分析
评论内容较长,点击标题查看
--刘修墨
4. re: POJ 2132 Cow Math 二分[未登录]
评论内容较长,点击标题查看
--糯米
5. re: POJ 1945 Power Hungry Cows 终极打表[未登录]
评论内容较长,点击标题查看
--糯米
阅读排行榜
1. [转]休息五分钟,学几个bash快捷键(17600)
2. [转] Floyd 算法原理(5056)
3. POJ 2018 Best Cow Fences 牛题(3240)
4. POJ 3150 Cellular Automaton 矩阵乘法+二分(3148)
5. POJ 1945 Power Hungry Cows 终极打表(2736)