IQrace 版 (精华区)

发信人: WindowsXP (★★★御风而行★★★), 信区: IQrace
标  题: Re: 98%的人一小时也做不出来的题目(答案)  (转载)
发信站: 哈工大紫丁香 (2003年02月23日00:02:47 星期天), 站内信件

题目出的太好了,呵呵
最近脑子迟钝,懒得分析,花了点时间编了个程序穷举了一下,
运算了不到3秒,还算挺快的,呵呵
唉,脑子不愿意活动了,只好用傻子方法了,hoho,苦笑中

题目有唯一解:3452554321,其中12345分别代表ABCDE
delphi原代码:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
      function It_is_correct(sample:array of integer):boolean;
      function ans1(sample:array of integer):integer;
      function ans2(sample:array of integer):integer;
      function ans3(sample:array of integer):integer;
      function ans4(sample:array of integer):integer;
      function ans5(sample:array of integer):integer;
      function ans6(sample:array of integer):integer;
      function ans7(sample:array of integer):integer;
      function ans8(sample:array of integer):integer;
      function ans9(sample:array of integer):integer;
      function ans10(sample:array of integer):integer;

    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}
function Tform1.ans1(sample:array of integer):integer;
var
i:integer;
temp:integer;
begin
//  1、第一个答案是b的问题是哪一个?
//  (a)2;(b) 3;(c)4;(d)5;(e)6
temp:=0;
for i:=0 to 9 do
     begin
        if sample[i]=2 then
        begin
        temp:=i+1;
        break;
        end;
     end;
if temp=2 then begin result:=1; exit;end;
if temp=3 then begin result:=2; exit;end;
if temp=4 then begin result:=3; exit;end;
if temp=5 then begin result:=4; exit;end;
if temp=6 then begin result:=5; exit;end;
end;

function Tform1.ans2(sample:array of integer):integer;
begin
//  2、唯一的连续两个具有相同答案的问题是:
//  (a)2,3;(b)3,4;(c)4,5;(d)5,6;(e)6,7;
result:=0;
if sample[1]=sample[2] then begin result:=1; exit;end;
if sample[2]=sample[3] then begin result:=2; exit;end;
if sample[3]=sample[4] then begin result:=3; exit;end;
if sample[4]=sample[5] then begin result:=4; exit;end;
if sample[5]=sample[6] then begin result:=5; exit;end;
end;

function Tform1.ans3(sample:array of integer):integer;
begin
//  3、本问题答案和哪一个问题的答案相同?
//  (a)1;(b)2;(c)4;(d)7;(e)6
result:=0;
if sample[2]=sample[0] then begin result:=1; exit;end;
if sample[2]=sample[1] then begin result:=2; exit;end;
if sample[2]=sample[3] then begin result:=3; exit;end;
if sample[2]=sample[6] then begin result:=4; exit;end;
if sample[2]=sample[5] then begin result:=5; exit;end;

end;

function Tform1.ans4(sample:array of integer):integer;
var
i:integer;
begin
//  4、答案是a的问题的个数是:
//  (a)0;(b)1;(c)2;(d)3;(e)4
result:=0;
for i:=0 to 9 do
     begin
        if sample[i]=1 then result:=result+1;
     end;
result:=result+1;
end;

function Tform1.ans5(sample:array of integer):integer;
begin
//  5、本问题答案和哪一个问题的答案相同?
//  (a)10;(b)9;(c)8;(d)7;(e)6
result:=0;
if sample[4]=sample[9] then begin result:=1; exit;end;
if sample[4]=sample[8] then begin result:=2; exit;end;
if sample[4]=sample[7] then begin result:=3; exit;end;
if sample[4]=sample[6] then begin result:=4; exit;end;
if sample[4]=sample[5] then begin result:=5; exit;end;

end;

function Tform1.ans6(sample:array of integer):integer;
var
i,resulta,resultb,resultc,resultd,resulte:integer;
begin
//  6、答案是a的问题的个数和答案是什么的问题的个数相同?
//  (a)b;(b)c;(c)d;(d)e;(e)以上都不是
resulta:=0;
resultb:=0;
resultc:=0;
resultd:=0;
resulte:=0;
for i:=0 to 9 do
     begin
        if sample[i]=1 then resulta:=resulta+1;
     end;
for i:=0 to 9 do
     begin
        if sample[i]=2 then resultb:=resultb+1;
     end;
for i:=0 to 9 do
     begin
        if sample[i]=3 then resultc:=resultc+1;
     end;
for i:=0 to 9 do
     begin
        if sample[i]=4 then resultd:=resultd+1;
     end;
for i:=0 to 9 do
     begin
        if sample[i]=5 then resulte:=resulte+1;
     end;
result:=5;
if resulta=resultb then begin result:=1; exit; end;
if resulta=resultc then begin result:=2; exit; end;
if resulta=resultd then begin result:=3; exit; end;
if resulta=resulte then begin result:=4; exit; end;
end;

function Tform1.ans7(sample:array of integer):integer;
var
i:integer;
begin
//  7、按照字母顺序,本问题的答案和下一个问题的答案相差几个字母?
//  (a)4;(b)3;(c)2;(d)1;(e)0。(注:a和b相差一个字母)
i:=abs(sample[6]-sample[7]);
if i=4 then begin result:=1;exit;end;
if i=3 then begin result:=2;exit;end;
if i=2 then begin result:=3;exit;end;
if i=1 then begin result:=4;exit;end;
if i=0 then begin result:=5;exit;end;
end;

function Tform1.ans8(sample:array of integer):integer;
var
i:integer;
temp:integer;
begin
//  8、答案是元音字母的问题的个数是:
//  (a)2;(b)3;(c)4;(d)5;(e)6。(注:a和e是元音字母)
temp:=0;
for i:=0 to 9 do
     begin
        if ((sample[i]=1) or (sample[i]=5)) then temp:=temp+1;
     end;
if temp=2 then begin result:=1;exit;end;
if temp=3 then begin result:=2;exit;end;
if temp=4 then begin result:=3;exit;end;
if temp=5 then begin result:=4;exit;end;
if temp=6 then begin result:=5;exit;end;
end;

function Tform1.ans9(sample:array of integer):integer;
var
i:integer;
temp:integer;
begin
//  9、答案是辅音字母的问题的个数是:
//  (a)一个质数;(b)一个阶乘数;(c)一个平方数;(d)一个立方数,
 (e)5的倍数
temp:=0;
for i:=0 to 9 do
     begin
        if ((sample[i]=1) or (sample[i]=5)) then temp:=temp+1;
     end;
temp:=10-temp;
if ((temp=2) or (temp=3) or (temp=5)) then begin result:=1;exit;end;
if ((temp=1) or (temp=2) or (temp=6)) then begin result:=2;exit;end;
if ((temp=1) or (temp=4) or (temp=9)) then begin result:=3;exit;end;
if ((temp=1) or (temp=9)) then begin result:=4;exit;end;
if ((temp=0) or (temp=5)) then begin result:=5;exit;end;
end;

function Tform1.ans10(sample:array of integer):integer;
begin
//  10、本问题的答案是:
//  (a)a;(b)b;(c)c;(d)d;(e)e。

end;

function Tform1.It_is_correct(sample:array of integer):boolean;
begin
if ans1(sample)<>sample[0] then begin result:=false; exit; end;
if ans2(sample)<>sample[1] then begin result:=false; exit; end;
if ans3(sample)<>sample[2] then begin result:=false; exit; end;
if ans4(sample)<>sample[3] then begin result:=false; exit; end;
if ans5(sample)<>sample[4] then begin result:=false; exit; end;
if ans6(sample)<>sample[5] then begin result:=false; exit; end;
if ans7(sample)<>sample[6] then begin result:=false; exit; end;
if ans8(sample)<>sample[7] then begin result:=false; exit; end;
if ans9(sample)<>sample[8] then begin result:=false; exit; end;
result:=True;
end;



procedure TForm1.Button1Click(Sender: TObject);
var
options:array[1..10] of integer;
i1,i2,i3,i4,i5,i6,i7,i8,i9,i10:integer;
begin
//showmessage(inttostr(ans5([1,2,2,1,3,2,1,8,3,2])));
//C;D;E;B;E;E;D;C;B;A   [3,4,5,2,5,5,4,3,2,1]
//if It_is_correct([3,4,5,2,5,5,4,3,2,1]) then showmessage('yes!') 
else showmessage('no');
for i1:=1 to 5 do
begin
    for i2:=1 to 5 do
    begin
    for i3:=1 to 5 do
        begin
        for i4:=1 to 5 do
           begin
           for i5:=1 to 5 do
              begin
              for i6:=1 to 5 do
                begin
                for i7:=1 to 5 do
                   begin
                   for i8:=1 to 5 do
                      begin
                      for i9:=1 to 5 do
                         begin
                         for i10:=1 to 5 do
                            begin
if It_is_correct([i1,i2,i3,i4,i5,i6,i7,i8,i9,i10]) then memo1.Lines.
Add(inttostr(i1)+inttostr(i2)+inttostr(i3)+inttostr(i4)+inttostr(i5)+int
tostr(i6)+inttostr(i7)+inttostr(i8)+inttostr(i9)+inttostr(i10));        
                        
                            end;
                         end;
                      end;
                   end;
                 end;
              end;
           end;
        end;
    end;
end;
showmessage('Done');
end;

end.


【 在 emanuel (小飞象★傲雪飞扬) 的大作中提到: 】
: 【 以下文字转载自 Joke 讨论区 】
: 【 原文由 online 所发表 】
:    请回答下面10个问题:
:   1、第一个答案是b的问题是哪一个?
:   (a)2;(b) 3;(c)4;(d)5;(e)6
:   2、唯一的连续两个具有相同答案的问题是:
:   (a)2,3;(b)3,4;(c)4,5;(d)5,6;(e)6,7;
:   3、本问题答案和哪一个问题的答案相同?
:   (a)1;(b)2;(c)4;(d)7;(e)6
:   4、答案是a的问题的个数是:
:   (a)0;(b)1;(c)2;(d)3;(e)4


--
多少次迎著冷眼与嘲笑  
从没有放弃过心中的理想

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 172.16.2.54]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:204.789毫秒