小学信息学奥赛题

xiaoqiqixiao 2015-12-07 09:39:05
今天上网突然找到一个第十五届全国青少年信息学奥林匹克联赛 “建平杯”上海赛区初赛试题,要求:阅读程序,并写出程序正确的运行结果,题目如下:
var a,b,i,n:integer;
begin for a:=1 to 300 do
begin
b:=0;
for i:=1 to a div 2 do
if a mod i=0 then b:=b+i;
n:=0;
for i:=1 to b div 2 do
if b mod i=0 then n:=n+i;
if (n=a) and (a<b) then
writeln(a,' ',b);
end;
end.
输出:
我知道答案:220 284,也知道里面两个循环大概是将所有的因子都加起来
但是实在不知道是怎么求出来的,难道把a从1到300一直试下来
有没有高手给分析一下这个试题
...全文
357 点赞 收藏 3
写回复
3 条回复
lyhoo163 2015年12月13日
此类题,解题的原理就是枚举。
回复 点赞
xiaoqiqixiao 2015年12月08日
非常感谢,终于明白了。不过这种题做成程序设计题,那没什么问题,做成程序阅读题,真是无语了。
回复 点赞
早打大打打核战争 2015年12月07日
亲和数,知道这个就能直接写出答案。这种题纯属害人,别说小学生,就是大学生,不知道这个概念也只能硬算。
回复 点赞
发动态
发帖子
语言基础/算法/系统设计
创建于2007-08-02

3418

社区成员

3.3w+

社区内容

Delphi 语言基础/算法/系统设计
社区公告
暂无公告