楼主: tree_new_bee

Euler Project 挨个做 - 之一(Q1-50)

[复制链接]
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
281#
发表于 2016-11-27 17:42 | 只看该作者
变化还是很有规律的,但不好总结

SQL> with t as(select level l from dual connect by level <=100),
  2  t1 as(select l,(select sum(power(substr(l,level,1),5)) from dual connect by level<=length(l))s from t)
  3  select l,s,s-lag(s)over(order by l)dif from t1;

         L          S        DIF
---------- ---------- ----------
         1          1
         2         32         31
         3        243        211
         4       1024        781
         5       3125       2101
         6       7776       4651
         7      16807       9031
         8      32768      15961
         9      59049      26281
        10          1     -59048
        11          2          1
        12         33         31
        13        244        211
        14       1025        781
        15       3126       2101
        16       7777       4651
        17      16808       9031
        18      32769      15961
        19      59050      26281
        20         32     -59018

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
282#
发表于 2016-11-27 18:33 | 只看该作者
总结不出来,先用缓存法
declare
s int:=0;
function f(x int)
return int
is
s1 int:=0;
n int;
begin
for i in 1..length(x) loop
n:=substr(x,i,1);
s1:=s1+(n*n*n*n*n);
end loop;
return s1;
end;
begin
for i in 1..4e5 loop
if f(i)=i then
s:=s+i;
end if;
end loop;
dbms_output.put_line(s);
end;
/
443840

PL/SQL 过程已成功完成。

已用时间:  00: 00: 02.15

declare
--a varray(10);
type tabint is table of number index by pls_integer;
a tabint;
s int:=0;
temp int:=0;
function f(x int)
return int
is
s1 int:=0;
n int;
m int;
begin
m:=mod(x,10);
if m=0 then
for i in 1..length(x) loop
n:=substr(x,i,1);
s1:=s1+(n*n*n*n*n);
end loop;
temp:=s1;
else
s1:=temp+a(m);
end if;
return s1;
end;
begin
--a.extend(10);
for i in 1..9 loop
a(i):=power(i,5);
end loop;
for i in 1..4e5 loop
if f(i)=i then
s:=s+i;
end if;
end loop;
dbms_output.put_line(s);
end;
/
443840

PL/SQL 过程已成功完成。

已用时间:  00: 00: 00.84

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表