切换到宽版
  • 7723阅读
  • 9回复

请大家看这三个程序有没有好的方法做出来? [复制链接]

上一主题 下一主题
离线wsfxtyz
 
只看楼主 倒序阅读 0 发表于: 2007-02-25
1.下面这个程序怎样做出来?用笔算
  var
  n:longint
  function g(k:longint):longint;
  begin
  if k <=1 then g:=k
    else g:=(2002*g(k-1)+2003*g(k-2))mod 2005;
  end;
  begin   
  read(n);  
  writeln(g(n));
   end.  
输入:2005  
答案输出:31

2、下面这个程序怎样做出来?用笔算
program program4;
const
u: array[0..2] of integer = (1, -3, 2);
v: array[0..1] of integer = (-2, 3);
var
i, n, sum: integer;
function g(n: integer): integer;
var i, sum: integer;
begin
sum := 0;
for i := 1 to n do inc(sum, u[i mod 3] * i);
g := sum;
end;
begin
sum := 0;
read(n);
for i := 1 to n do inc(sum, v[i mod 2] * g(i));
writeln(sum);
end.
输入:103
答案输出:-400      

3.下面这个程序怎样做出来?用笔算
var
 a : array[1..50] of integer;
 n,i,sum:integer;
 procedure work(p,r:integer);
  var
  i,j,temp:integer;
  begin
  if p<r then
    begin
  i:=p-1;
     for j:=p to r-1 do
  if a[j]>=a[r] then
      begin
  inc(i);
  temp:=a; a:=a[j]; a[j]:=temp;
end;
  temp:=a[i+1]; a[i+1]:= a[r]; a[r]:=temp;
  work(p,i);
  work(i+2,r);
end;
end;
begin
  read(n);
  for i:=1 to n do read(a);
 work(1,n);
  for i:=1 to n-1 do sum:=sum+abs(a[i+1]-a);
 writeln(sum); 
end.
 输入:10 23 435 12 345 3123 43 456 12 32 -100
 答案输出:3223
离线archimedes

只看该作者 1 发表于: 2007-03-03
?
离线oi参赛者
只看该作者 2 发表于: 2007-03-05
你已经写出来了啊
为什么还去算
离线oiloving
只看该作者 3 发表于: 2007-03-08
就是,
离线foolgirl
只看该作者 4 发表于: 2007-05-17
慢慢领会吧
离线blueelf
只看该作者 5 发表于: 2007-05-19
第一,二题比较简单,直接将数据按要求带进去算就可以了!
第三题就比较麻烦,要根据循环和自定义过程一个一个算,列出一组数据后,把结果按规律推出来! 稍有耐心就
能算出来了!但前提是要读懂程序!
离线clwxzh57
只看该作者 6 发表于: 2007-06-05
你还是自己运算吧。
离线haiwei
只看该作者 7 发表于: 2007-06-05
先算再找规律
haiwei
http://user.qzone.qq.com/317048955
离线daydream.cy
只看该作者 8 发表于: 2007-07-01
第一道好像是递归什么的
离线haiwei
只看该作者 9 发表于: 2007-07-12
多动脑筋总是有好处的
haiwei
http://user.qzone.qq.com/317048955
快速回复
限100 字节
 
上一个 下一个