楼主: 〇〇

[转载] 趣味题

[复制链接]
论坛徽章:
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
101#
 楼主| 发表于 2010-6-18 08:38 | 只看该作者
加上输出时间,
D:\app>tp7
当前时间:  8:35:29.12
输入新时间:
当前时间:  8:35:29.18
输入新时间:

  1. #include <stdio.h>
  2. #include <time.h>
  3. int main()
  4. {
  5. int i=0;
  6. int j=0;
  7. int k=0;
  8. int l=0;
  9. char a[60000][15];
  10. int b[15];
  11. int c=0;
  12. for(i=1;i<=7;i++)//level 1 第一个数第一位最大7
  13. {
  14. a[i][1]=i;
  15. a[i][2]=a[i][3]=a[i][4]=a[i][5]=a[i][6]=a[i][7]=a[i][8]=a[i][9]=a[i][10]=a[i][11]=a[i][12]=0;
  16. a[i][13]=1;
  17. a[i][14]=0;
  18. }
  19. b[0]=1;
  20. b[1]=8;
  21. i=b[1]-1;
  22. for(j=2;j<=12;j++)//level 2-12
  23. {
  24.         //printf("j=%d,%d-%d,count=%d\n",j,b[j-2],b[j-1]-1,b[j-1]-b[j-2]);
  25. for(k=1;k<=12;k++)//digit 1-12
  26. {
  27. for(l=b[j-2];l<b[j-1];l++) //l -> last level
  28. {
  29. if(
  30. (k!=a[l][1]&&k!=a[l][2]&&k!=a[l][3]&&k!=a[l][4]&&k!=a[l][5]&&k!=a[l][6]&&k!=a[l][7]&&k!=a[l][8]&&k!=a[l][9]&&k!=a[l][10]&&k!=a[l][11])
  31. &&((a[l][13]==3||a[l][13]==6||a[l][13]==9)
  32.   ||(a[l][13]==11&&k==(a[l][10]+a[l][11]+a[l][14])%16&&a[l][3]==a[l][1]+a[l][2]+(a[l][10]+a[l][11])/16)
  33.   ||(a[l][13]==10&&k>a[l][10])
  34.   ||(a[l][13]==8&&k==(a[l][7]+a[l][8]+a[l][14])%16)
  35.   ||(a[l][13]==7&&k>a[l][7])
  36.   ||(a[l][13]==5&&k==(a[l][4]+a[l][5])%16)
  37.   ||(a[l][13]==4&&k>a[l][4])
  38.   ||(a[l][13]==2&&(k==a[l][1]+a[l][2]||k==a[l][1]+a[l][2]+1))
  39.   ||(a[l][13]==1&&k>a[l][1]&&k+a[l][1]<=15)//12)
  40.   )
  41.   )
  42. {
  43. i++;
  44. a[i][1]=a[l][1];
  45. a[i][2]=(a[l][13]==1)?k:a[l][2];
  46. a[i][3]=(a[l][13]==2)?k:a[l][3];
  47. a[i][4]=(a[l][13]==3)?k:a[l][4];
  48. a[i][5]=(a[l][13]==4)?k:a[l][5];
  49. a[i][6]=(a[l][13]==5)?k:a[l][6];
  50. a[i][7]=(a[l][13]==6)?k:a[l][7];
  51. a[i][8]=(a[l][13]==7)?k:a[l][8];
  52. a[i][9]=(a[l][13]==8)?k:a[l][9];
  53. a[i][10]=(a[l][13]==9)?k:a[l][10];
  54. a[i][11]=(a[l][13]==10)?k:a[l][11];
  55. a[i][12]=(a[l][13]==11)?k:a[l][12];
  56. a[i][13]=a[l][13]+1;
  57. a[i][14]=
  58.          (a[l][13]==5)?(a[l][4]+a[l][5])/16:(
  59.          (a[l][13]==8?(a[l][7]+a[l][8]+a[l][14])/16:(
  60.          (a[l][13]==11)?(a[l][10]+a[l][11]+a[l][14])/16:a[l][14])));
  61. if(a[i][13]==12)
  62. {
  63. c++;   
  64. printf("%x%x%x%x+%x%x%x%x=%x%x%x%x\n",/*1 10 7 4 2 11 8 5 3 12 9 6*/a[i][1],a[i][10],a[i][7],a[i][4],a[i][2],a[i][11],a[i][8],a[i][5],a[i][3],a[i][12],a[i][9],a[i][6]);
  65. printf("%x%x%x%x+%x%x%x%x=%x%x%x%x\n",/*1 10 7 5 2 11 8 4 3 12 9 6*/a[i][1],a[i][10],a[i][7],a[i][5],a[i][2],a[i][11],a[i][8],a[i][4],a[i][3],a[i][12],a[i][9],a[i][6]);
  66. printf("%x%x%x%x+%x%x%x%x=%x%x%x%x\n",/*1 10 8 4 2 11 7 5 3 12 9 6*/a[i][1],a[i][10],a[i][8],a[i][4],a[i][2],a[i][11],a[i][7],a[i][5],a[i][3],a[i][12],a[i][9],a[i][6]);
  67. printf("%x%x%x%x+%x%x%x%x=%x%x%x%x\n",/*1 11 7 4 2 10 8 5 3 12 9 6*/a[i][1],a[i][11],a[i][7],a[i][4],a[i][2],a[i][10],a[i][8],a[i][5],a[i][3],a[i][12],a[i][9],a[i][6]);
  68. printf("%x%x%x%x+%x%x%x%x=%x%x%x%x\n",/*1 11 8 4 2 10 7 5 3 12 9 6*/a[i][1],a[i][11],a[i][8],a[i][4],a[i][2],a[i][10],a[i][7],a[i][5],a[i][3],a[i][12],a[i][9],a[i][6]);
  69. printf("%x%x%x%x+%x%x%x%x=%x%x%x%x\n",/*1 11 7 5 2 10 8 4 3 12 9 6*/a[i][1],a[i][11],a[i][7],a[i][5],a[i][2],a[i][10],a[i][8],a[i][4],a[i][3],a[i][12],a[i][9],a[i][6]);
  70. printf("%x%x%x%x+%x%x%x%x=%x%x%x%x\n",/*1 11 8 5 2 10 7 4 3 12 9 6*/a[i][1],a[i][11],a[i][8],a[i][5],a[i][2],a[i][10],a[i][7],a[i][4],a[i][3],a[i][12],a[i][9],a[i][6]);
  71. printf("%x%x%x%x+%x%x%x%x=%x%x%x%x\n",/*1 10 8 5 2 11 7 4 3 12 9 6*/a[i][1],a[i][10],a[i][8],a[i][5],a[i][2],a[i][11],a[i][7],a[i][4],a[i][3],a[i][12],a[i][9],a[i][6]);

  72. }
  73. } //if     
  74. } //l

  75. } //k
  76. b[j]=i+1;
  77. } //j
  78. printf("c=%d\n",c*8);
  79. return 1;
  80. }

复制代码

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
9
生肖徽章2007版:牛
日期:2009-03-10 21:26:492010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:葡萄牙
日期:2010-02-22 14:35:242010新春纪念徽章
日期:2010-03-01 11:19:092010广州亚运会纪念徽章:射击
日期:2010-09-08 23:42:12ITPUB9周年纪念徽章
日期:2010-10-08 09:31:212010广州亚运会纪念徽章:拳击
日期:2010-10-30 00:46:582011新春纪念徽章
日期:2011-02-18 11:43:322011新春纪念徽章
日期:2011-03-01 08:49:39
102#
发表于 2010-7-19 09:52 | 只看该作者
用一个比较暴力的方法:


WITH n AS (
   SELECT ROWNUM n FROM DUAL CONNECT BY ROWNUM<=9
   ),
tmp as (
   select n1.n n1 , n2.n n2, n3.n n3 ,
          n4.n n4 , n5.n n5, n6.n n6 ,
          n7.n n7 , n8.n n8, n9.n n9
   from n n1,n n2,n n3,n n4,n n5,n n6,n n7,n n8,n n9
   where n1.n between 1 and 4
     and n1.n + n4.n <= 9 /*
     and n7.n - n1.n - n4.n = trunc(( ( n2.n + n5.n )  + (n3.n + n6.n - n9.n)/10 )/10)*/
     and n8.n - n2.n - n5.n = (n3.n + n6.n - n9.n)/10
     and mod( n3.n + n6.n ,10 ) = n9.n
     and n1.n < n4.n
     and n1.n*100+n2.n*10+n3.n + n4.n*100+n5.n*10+n6.n = n7.n*100+n8.n*10+n9.n
     and n1.n not in (       n2.n, n3.n, n4.n, n5.n, n6.n, n7.n, n8.n, n9.n)
     and n2.n not in ( n1.n,       n3.n, n4.n, n5.n, n6.n, n7.n, n8.n, n9.n)
     and n3.n not in ( n1.n, n2.n,       n4.n, n5.n, n6.n, n7.n, n8.n, n9.n)
     and n4.n not in ( n1.n, n2.n, n3.n,       n5.n, n6.n, n7.n, n8.n, n9.n)
     and n5.n not in ( n1.n, n2.n, n3.n, n4.n,       n6.n, n7.n, n8.n, n9.n)
     and n6.n not in ( n1.n, n2.n, n3.n, n4.n, n5.n,       n7.n, n8.n, n9.n)
     and n7.n not in ( n1.n, n2.n, n3.n, n4.n, n5.n, n6.n,       n8.n, n9.n)
     and n8.n not in ( n1.n, n2.n, n3.n, n4.n, n5.n, n6.n, n7.n,       n9.n)
     and n9.n not in ( n1.n, n2.n, n3.n, n4.n, n5.n, n6.n, n7.n, n8.n      )
)
select * from tmp;


这里没什么算法可言,首先是9个1~9的序列表进行连接,联接的条件包括,其中直接就把题意的写到联接条件中,当然还有9个数字不重复出现的条件
执行用时月0.23秒,执行计划和统计信息如下:


------------------------------------------------------------------------------------------------------------
| Id  | Operation                       | Name                     | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                |                          |     1 |   117 |    20   (0)| 00:00:01 |
|   1 |  TEMP TABLE TRANSFORMATION      |                          |       |       |            |          |
|   2 |   LOAD AS SELECT                | SYS_TEMP_0FD9D6999_55670 |       |       |            |          |
|   3 |    COUNT                        |                          |       |       |            |          |
|*  4 |     CONNECT BY WITHOUT FILTERING|                          |       |       |            |          |
|   5 |      FAST DUAL                  |                          |     1 |       |     2   (0)| 00:00:01 |
|   6 |   NESTED LOOPS                  |                          |     1 |   117 |    18   (0)| 00:00:01 |
|   7 |    NESTED LOOPS                 |                          |     1 |   104 |    16   (0)| 00:00:01 |
|   8 |     NESTED LOOPS                |                          |     1 |    91 |    14   (0)| 00:00:01 |
|   9 |      NESTED LOOPS               |                          |     1 |    78 |    12   (0)| 00:00:01 |
|  10 |       NESTED LOOPS              |                          |     1 |    65 |    10   (0)| 00:00:01 |
|  11 |        NESTED LOOPS             |                          |     1 |    52 |     8   (0)| 00:00:01 |
|  12 |         NESTED LOOPS            |                          |     1 |    39 |     6   (0)| 00:00:01 |
|  13 |          NESTED LOOPS           |                          |     1 |    26 |     4   (0)| 00:00:01 |
|  14 |           VIEW                  |                          |     1 |    13 |     2   (0)| 00:00:01 |
|  15 |            TABLE ACCESS FULL    | SYS_TEMP_0FD9D6999_55670 |     1 |    13 |     2   (0)| 00:00:01 |
|* 16 |           VIEW                  |                          |     1 |    13 |     2   (0)| 00:00:01 |
|  17 |            TABLE ACCESS FULL    | SYS_TEMP_0FD9D6999_55670 |     1 |    13 |     2   (0)| 00:00:01 |
|* 18 |          VIEW                   |                          |     1 |    13 |     2   (0)| 00:00:01 |
|  19 |           TABLE ACCESS FULL     | SYS_TEMP_0FD9D6999_55670 |     1 |    13 |     2   (0)| 00:00:01 |
|* 20 |         VIEW                    |                          |     1 |    13 |     2   (0)| 00:00:01 |
|  21 |          TABLE ACCESS FULL      | SYS_TEMP_0FD9D6999_55670 |     1 |    13 |     2   (0)| 00:00:01 |
|* 22 |        VIEW                     |                          |     1 |    13 |     2   (0)| 00:00:01 |
|  23 |         TABLE ACCESS FULL       | SYS_TEMP_0FD9D6999_55670 |     1 |    13 |     2   (0)| 00:00:01 |
|* 24 |       VIEW                      |                          |     1 |    13 |     2   (0)| 00:00:01 |
|  25 |        TABLE ACCESS FULL        | SYS_TEMP_0FD9D6999_55670 |     1 |    13 |     2   (0)| 00:00:01 |
|* 26 |      VIEW                       |                          |     1 |    13 |     2   (0)| 00:00:01 |
|  27 |       TABLE ACCESS FULL         | SYS_TEMP_0FD9D6999_55670 |     1 |    13 |     2   (0)| 00:00:01 |
|* 28 |     VIEW                        |                          |     1 |    13 |     2   (0)| 00:00:01 |
|  29 |      TABLE ACCESS FULL          | SYS_TEMP_0FD9D6999_55670 |     1 |    13 |     2   (0)| 00:00:01 |
|* 30 |    VIEW                         |                          |     1 |    13 |     2   (0)| 00:00:01 |
|  31 |     TABLE ACCESS FULL           | SYS_TEMP_0FD9D6999_55670 |     1 |    13 |     2   (0)| 00:00:01 |
------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   4 - filter(ROWNUM<=9)
  16 - filter("N8"."N"<>"N9"."N")
  18 - filter("N7"."N"<>"N8"."N" AND "N7"."N"<>"N9"."N")
  20 - filter("N6"."N"<>"N7"."N" AND "N6"."N"<>"N8"."N" AND "N6"."N"<>"N9"."N")
  22 - filter("N9"."N"=MOD("N3"."N"+"N6"."N",10) AND "N3"."N"<>"N6"."N" AND "N3"."N"<>"N7"."N" AND
              "N3"."N"<>"N8"."N" AND "N3"."N"<>"N9"."N")
  24 - filter("N3"."N"<>"N5"."N" AND "N5"."N"<>"N6"."N" AND "N5"."N"<>"N7"."N" AND
              "N5"."N"<>"N8"."N" AND "N5"."N"<>"N9"."N")
  26 - filter("N2"."N"<>"N3"."N" AND "N2"."N"<>"N5"."N" AND "N2"."N"<>"N6"."N" AND
              "N2"."N"<>"N7"."N" AND "N2"."N"<>"N8"."N" AND "N2"."N"<>"N9"."N" AND
              "N8"."N"-"N2"."N"-"N5"."N"=("N3"."N"+"N6"."N"-"N9"."N")/10)
  28 - filter("N2"."N"<>"N4"."N" AND "N3"."N"<>"N4"."N" AND "N4"."N"<>"N5"."N" AND
              "N4"."N"<>"N6"."N" AND "N4"."N"<>"N7"."N" AND "N4"."N"<>"N8"."N" AND "N4"."N"<>"N9"."N" AND
              "N4"."N">1)
  30 - filter("N1"."N">=1 AND "N1"."N"<=4 AND "N1"."N"+"N4"."N"<=9 AND "N1"."N"<"N4"."N" AND
              "N1"."N"*100+"N2"."N"*10+"N3"."N"+"N4"."N"*100+"N5"."N"*10+"N6"."N"="N7"."N"*100+"N8"."N"*10+"N9"."N
              " AND "N1"."N"<>"N2"."N" AND "N1"."N"<>"N3"."N" AND "N1"."N"<>"N4"."N" AND "N1"."N"<>"N5"."N" AND
              "N1"."N"<>"N6"."N" AND "N1"."N"<>"N7"."N" AND "N1"."N"<>"N8"."N" AND "N1"."N"<>"N9"."N")


Statistics
----------------------------------------------------------
          2  recursive calls
          8  db block gets
      49879  consistent gets
          1  physical reads
        600  redo size
       3501  bytes sent via SQL*Net to client
        578  bytes received via SQL*Net from client
          7  SQL*Net roundtrips to/from client
          1  sorts (memory)
          0  sorts (disk)
         84  rows processed



没有想象中的差。

使用道具 举报

回复
论坛徽章:
6
2010新春纪念徽章
日期:2010-03-01 11:20:00ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512010广州亚运会纪念徽章:柔道
日期:2010-12-06 10:59:502010广州亚运会纪念徽章:帆船
日期:2010-12-06 11:01:472011新春纪念徽章
日期:2011-02-18 11:43:34蜘蛛蛋
日期:2011-11-16 12:10:39
103#
发表于 2010-7-19 14:39 | 只看该作者
佩服啊!

使用道具 举报

回复
论坛徽章:
6
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512010广州亚运会纪念徽章:曲棍球
日期:2010-12-06 10:59:282011新春纪念徽章
日期:2011-02-18 11:43:34双黄蛋
日期:2011-07-15 10:33:56灰彻蛋
日期:2011-08-15 16:23:02ITPUB十周年纪念徽章
日期:2011-11-01 16:25:51
104#
发表于 2010-7-30 17:08 | 只看该作者

回复 #1 〇〇 的帖子

我是这样写的:
不过是136条。
SELECT N1,N2,N3 FROM
(WITH DATA AS
  (SELECT REPLACE(SYS_CONNECT_BY_PATH(NUM, ','), ',') STR_NUM
   FROM (SELECT LEVEL NUM FROM DUAL CONNECT BY LEVEL <10)
   WHERE LEVEL = 9
   START WITH NUM = 1
   CONNECT BY NOCYCLE PRIOR NUM != NUM
   AND LEVEL <= 9
  )

  SELECT TO_NUMBER(SUBSTR(STR_NUM,1,3)) N1,   TO_NUMBER(SUBSTR(STR_NUM,4,3)) N2, TO_NUMBER(SUBSTR(STR_NUM,7)) N3
  FROM DATA)
  WHERE N1+N2=N3
  OR N1+N3=N2
/*OR N2+N3=N1*/--R1 最小
------------------------------------------------
136 rows selected
Executed in 2.734 seconds

使用道具 举报

回复
论坛徽章:
6
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512010广州亚运会纪念徽章:曲棍球
日期:2010-12-06 10:59:282011新春纪念徽章
日期:2011-02-18 11:43:34双黄蛋
日期:2011-07-15 10:33:56灰彻蛋
日期:2011-08-15 16:23:02ITPUB十周年纪念徽章
日期:2011-11-01 16:25:51
105#
发表于 2010-7-30 17:17 | 只看该作者

求解,怎么试136条

求解,怎么试136条:
SELECT N1,N2,N3 FROM
(WITH DATA AS
  (SELECT REPLACE(SYS_CONNECT_BY_PATH(NUM, ','), ',') STR_NUM
   FROM (SELECT LEVEL NUM FROM DUAL CONNECT BY LEVEL <10)
   WHERE LEVEL = 9
   START WITH NUM = 1
   CONNECT BY NOCYCLE PRIOR NUM != NUM
   AND LEVEL <= 9
  )

  SELECT TO_NUMBER(SUBSTR(STR_NUM,1,3)) N1,   TO_NUMBER(SUBSTR(STR_NUM,4,3)) N2, TO_NUMBER(SUBSTR(STR_NUM,7)) N3
  FROM DATA)
  WHERE N1+N2=N3
  OR N1+N3=N2
/*OR N2+N3=N1*/--R1 最小

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
106#
发表于 2010-7-30 21:38 | 只看该作者
原帖由 cj402444206 于 2010-7-30 17:17 发表
求解,怎么试136条:
SELECT N1,N2,N3 FROM
(WITH DATA AS
  (SELECT REPLACE(SYS_CONNECT_BY_PATH(NUM, ','), ',') STR_NUM
   FROM (SELECT LEVEL NUM FROM DUAL CONNECT BY LEVEL  


这个有错:
START WITH NUM = 1

这就注定其中有一个数是 1XX, 题目没有这种限制。

使用道具 举报

回复
论坛徽章:
6
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512010广州亚运会纪念徽章:曲棍球
日期:2010-12-06 10:59:282011新春纪念徽章
日期:2011-02-18 11:43:34双黄蛋
日期:2011-07-15 10:33:56灰彻蛋
日期:2011-08-15 16:23:02ITPUB十周年纪念徽章
日期:2011-11-01 16:25:51
107#
发表于 2010-8-5 13:30 | 只看该作者

回复 #106 newkid 的帖子

呵呵,明白,谢谢newkid!
我改了下,就可以:
SELECT N1,N2,N3 FROM
(WITH DATA AS
  (SELECT REPLACE(SYS_CONNECT_BY_PATH(NUM, ','), ',') STR_NUM
   FROM (SELECT LEVEL NUM FROM DUAL CONNECT BY LEVEL <10)
   WHERE LEVEL = 9
   CONNECT BY NOCYCLE PRIOR NUM != NUM
  )
  SELECT TO_NUMBER(SUBSTR(STR_NUM,1,3)) N1,   TO_NUMBER(SUBSTR(STR_NUM,4,3)) N2, TO_NUMBER(SUBSTR(STR_NUM,7)) N3
  FROM DATA)
  WHERE N1+N2=N3
  AND  N1<N2
  AND N2<N3;

使用道具 举报

回复
论坛徽章:
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
108#
 楼主| 发表于 2010-8-28 18:44 | 只看该作者
oracle 9i

SQL> with t as(
  2    select x from (select level+122 x from dual connect by level<=(987-122))
  3    where substr(x,1,1)<>substr(x,2,1)
  4      and substr(x,1,1)<>substr(x,3,1)
  5      and instr(x,0)=0
  6  )
  7  select count(*) from (
  8    select a.x||'+'||b.x||'='||c.x
  9    from t a,t b,t c
10    where a.x+b.x=c.x
11      and a.x<494
12      and a.x<b.x
13      and b.x<c.x
14      and translate('123456789','$'||a.x||b.x||c.x,'$') is null
15  )
16  ;

  COUNT(*)
----------
       168

已用时间:  00: 00: 01.09
SQL> /

  COUNT(*)
----------
       168

已用时间:  00: 00: 00.05

使用道具 举报

回复
论坛徽章:
10
CTO参与奖
日期:2009-02-20 09:44:20ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30迷宫蛋
日期:2012-05-07 10:55:58茶鸡蛋
日期:2012-04-19 16:08:262012新春纪念徽章
日期:2012-01-04 11:54:462011新春纪念徽章
日期:2011-01-04 10:24:02数据库板块每日发贴之星
日期:2010-12-19 01:01:02数据库板块每日发贴之星
日期:2010-12-13 01:01:012009日食纪念
日期:2009-07-22 09:30:00优秀写手
日期:2014-02-08 06:00:12
109#
发表于 2010-12-4 17:01 | 只看该作者
原帖由 〇〇 于 2010-8-28 18:44 发表
oracle 9i

SQL> with t as(
  2    select x from (select level+122 x from dual connect by level



翻老贴来了。

想到的思路,看了看,前面似乎都有了。

发现还是你这个最朴实的办法最好用。

[ 本帖最后由 tree_new_bee 于 2010-12-4 17:13 编辑 ]

使用道具 举报

回复
论坛徽章:
10
CTO参与奖
日期:2009-02-20 09:44:20ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30迷宫蛋
日期:2012-05-07 10:55:58茶鸡蛋
日期:2012-04-19 16:08:262012新春纪念徽章
日期:2012-01-04 11:54:462011新春纪念徽章
日期:2011-01-04 10:24:02数据库板块每日发贴之星
日期:2010-12-19 01:01:02数据库板块每日发贴之星
日期:2010-12-13 01:01:012009日食纪念
日期:2009-07-22 09:30:00优秀写手
日期:2014-02-08 06:00:12
110#
发表于 2010-12-4 17:12 | 只看该作者
原帖由 〇〇 于 2010-8-28 18:44 发表
oracle 9i

SQL> with t as(
  2    select x from (select level+122 x from dual connect by level<=(987-122))
  3    where substr(x,1,1)<>substr(x,2,1)
  4      and substr(x,1,1)<>substr(x,3,1)
  5      and instr(x,0)=0
  6  )
  7  select count(*) from (
  8    select a.x||'+'||b.x||'='||c.x
  9    from t a,t b,t c
10    where a.x+b.x=c.x
11      and a.x<494
12      and a.x<b.x
13      and b.x<c.x
14      and translate('123456789','$'||a.x||b.x||c.x,'$') is null
15  )
16  ;


不过,这里为什么不在前面加入substr(x,2,1)<>substr(x,3,1)? 另外两条件并不能覆盖这个条件
加上这个条件,能进一步减小t表的数量,性能会略有改善

使用道具 举报

回复

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

本版积分规则 发表回复

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