回 帖 发 新 帖 刷新版面

主题:[讨论]挑战!!!凡有程序者加30*n分(n>=2)

这是一个有名的古代故事。有一个数学家发明了一种棋盘献给了印度
            国王,数学家看国王非常欢喜,就向国王提出了奖赏的要求:在棋盘
            的第一格放一粒米,第二格放二粒米,第三格放四粒米,第四格放八
            粒米,.....也就是说每一格都放进了比前一格多一倍的米。国王认为
            这简直不值一提,就毫不犹豫的答应了。谁知结果却让国王大吃一惊,
            当放到第64格时,就已经一共用了18446744073709551615粒米。这
            在当时要几百年才能种出来。
                现假定该棋盘共有200格,请你编程计算从第N格至第M 格共有
            多少粒米,并以三位一撇的形式输出。

[输入]: 键盘输入整数N,M(1≤N,M≤200不用判错)。

[输出]: 精确输出从第N格至第M 格共有多少粒米,并以三位一撇的形式输出。

[样例]:输入:N,M=20,37
      
       输出:137,438,429,184




   算24                (30分)
[问题描述]
给出4个1到1000之间的整数,用这4个整数,通过+、–、*的运算而得到24,运算规则如下:
1.    每个数必须使用一次,只能使用一次
2.    运算符无优先级之分,自左向右计算。

例如:输入4个数为2,9,3,1,
      则计算方法为3+9*2*1=24

[输   入]: 4个1到1000之间的整数

[输   出]: 若4个数不能产生出24,则输出error;
           若能产生,则输出产生式(若有多个,仅能输出一个)。

例如:输入:1,1,2,2              输入:4,4,4,4
      输出:error                    输出:4*4+4+4=24
          
[em1][em2]

回复列表 (共6个回复)

沙发

第一题比较好打

板凳

program ex2;
var a,b,c:array[0..1000]of integer;
    i,j,k,la,lb,m,n,o,p,q,r,s,t:integer;
begin
  a[1]:=1;
  readln(m,n);
  la:=1;
  for i:=2 to m+1 do
    begin
      k:=0;
      for j:=1 to la+1 do
        begin
          a[j]:=a[j]+a[j]+k;
          k:=a[j] div 10;
          a[j]:=a[j] mod 10;
        end;
      la:=la+2;
      while a[la]=0 do
        la:=la-1;
    end;
  for i:=1 to la do
    b[i]:=a[i];
  lb:=la;
  for i:=1 to n-m do
    begin
      k:=0;
      for j:=1 to lb+1 do
        begin
          b[j]:=b[j]+b[j]+k;
          k:=b[j] div 10;
          b[j]:=b[j] mod 10;
        end;
      lb:=500;
      while b[lb]=0 do
        lb:=lb-1;
    end;
  for i:=1 to lb do
    begin
      c[i]:=b[i]-a[i];
      if c[i]<0 then
        begin
          o:=i+1;
          while b[o]=0 do
            o:=o+1;
          b[o]:=b[o]-1;
          for j:=o-1 downto i+1 do
             b[j]:=9;
          c[i]:=c[i]+10;
        end
    end;
  lb:=500;
  while (c[lb]=0)and(lb<>1) do
      lb:=lb-1;
  for i:=lb downto 1 do
    begin
      if (i mod 3=0)and(i<>lb) then
        write(',');
      write(c[i]);
    end;
  writeln;
end.

3 楼

上面那一题是第一题

4 楼

program d24;
var f,a1,a2,a3,a4,b1,b2,b3,b4,i,j,k:integer;
    x:real;
begin
readln(a1,a2,a3,a4);
for i:=1 to 4 do
for j:=1 to 4 do
for k:=1 to 4 do
begin
b1:=a1;b2:=a2;b3:=a3;b4:=a4;
case i of
1:x:=a1+a2;
2:x:=a1-a2;
3:x:=a1*a2;
4:x:=a1/a2;
end;
case j of
1:x:=x+a3;
2:x:=x-a3;
3:x:=x*a3;
4:x:=x/a3;
end;
case k of
1:x:=x+a4;
2:x:=x-a4;
3:x:=x*a4;
4:x:=x/a4;
end;
if x=24 then
begin
write(a1);
case i of
1:write('+');
2:write('-');
3:write('*');
4:write('/');
end;
write(a2);
case j of
1:write('+');
2:write('-');
3:write('*');
4:write('/');
end;
write(a3);
case k of
1:write('+');
2:write('-');
3:write('*');
4:write('/');
end;
writeln(a4,'=',24);
f:=1;
end;
end;
if f=0 then writeln('error');
end.
这是第二题,你的样例通过了!

5 楼

2楼的,好象不对啊?!

6 楼

我试过了,对的

我来回复

您尚未登录,请登录后再回复。点此登录或注册