2019.7.9 校内测试题 史密斯数

匿名 (未验证) 提交于 2019-12-02 23:47:01

 题目

  史密斯数(smith.cpp,1s,128MB)

【问题描述】:

  美国有一位数字家名叫阿尔伯特・威兰斯基,他姐夫史密斯非常喜欢研究数

学,所以两人经常在一起研讨各种数学问题。有时,两人碰不到一起,就习惯性
地用电话交流。
  两人刚结束电话交谈,史密斯突然灵感来临,对威兰斯基的电话号码
“4937775”产生了兴趣,总觉得这是个特别的数。可它的特殊之处究竟在哪儿
呢?史密斯开始思索考证起来,他先把 4937775 分解质因数:4937775=3×5×5
×65837,然后再把 4937775 所有质因数各位上的数字相加得:3+5+5+6+5
+8+3+7=42,接着他又把 4937775 各位上的数字相加得:4+9+3+7+7+7
+5=42,秘密终于找到了,原来这两个和相等。这真有意思,难道是巧合么?有
  没有其他的数也有此特点呢?结果发现,所有质数都是具有如此特点。
后来的数学家们把这样的数叫做“史密斯数”,而且还决定质数(简单不复
杂)不属于斯密斯数。除质数之外还有许多数具有这样独特的性质,其中最小的
数是 4。大家不妨检查一下,4=2×2,2+2=4。类似有,22=2×11,2+2=2+1+
1;27=3×3×3,2+7=3+3+3。
  你的任务是寻找最接近而且大于给定的数的斯密斯数。

【输入文件】:

只有一行一个整数 N,N 不超过 8 位数字。

【输出文件】:

  一个整数,即第一个大于给定的数的斯密斯数。

【输入输出样例】:

  smith.in
    4937774
  smith.out
    4937775

【数据规模】:

考试得分:  0

应试策略:

  1.   可以明确的是,考试时题目都没有看懂,到底什么是斯密斯数(没有质数哦!),考试时将质数也看作斯密斯数了

非完美算法:  

  请看正解

正解:

  1.   已知大于N的最大的斯密斯数为N的最大值的基础上加上2000左右(打表小函数得出),筛选1到最大斯密斯数之间的质数,时间复杂度的为O(1e9),勉强能过,空间复杂度为bool[1e9],又因为这个区间质数最多为5762455(小函数提前计算),则再加上int[5762455],勉强还有点空间

总结:

  1.    Handsome guy and beaty,读题真的very important!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!