pascal一道题求解

作者&投稿:仝面 (若有异议请与网页底部的电邮联系)
求解一道pascal的题目(简单)~

实在对不起 你的程序可读性的确有点差 一眼看下只觉头疼。
以下是我的程序 希望能给你一点提示:
Program Monkey;
const max=255;{猴子数最大量}
var i,n,total{离队的猴子数},pace{控制报数}:integer;
a:array[0..max-1]of boolean;{控制猴子的队列}
begin
readln(n);
fillchar(a,sizeof(a),0);
total:=0;i:=-1;{初始化}
while total<n-2 do begin{剩下最后两猴之前的过程}
pace:=0;
while pace<3 do begin{报数}
i:=(i+1) mod n;
if not a[i] then inc(pace);
end;
a[i]:=true;inc(total);{报3的出列}
end;
while a[i] do i:=(i+1)mod n;{报1的为猴王}
writeln(i+1);{初始为了便于处理(关键是mod语句)整体前移了一位,故最后需加1}
end.

该先把每一位轮换多少次后回到原位的次数记下来,然后用高精求次数的最小公倍数就可以了.模拟绝对超时.

var
    i,k,m,n:longint;
begin
    readln(n);
    m:=0;
    for i:=1 to n do 
    begin
        read(k);
        m:=m xor k;
    end;
    writeln(m);
end.

解释:xor运算是二进制的运算,有以下定律:(a xor b) xor b=a,即一个数与两个相同的数进行xor运算(异或运算)后值不变,同时有0 xor a=a,则初始化m为0,对N个数都进行异或运算,有两个的数互相抵消,剩下的m就是那个只有一个的单独的数



program xxx;
var
  n,i,t:integer;
  arr:array[1..maxint] of integer;
begin
  assign(input,'xxx.in');
  assign(output,'xxx.out');
  reset(input);
  rewrite(output);
  fillchar(arr,sizeof(arr),0);
  readln(n);
  for i:=1 to n do
    begin
      readln(t);
      inc(arr[t]);
    end;
  for i:=1 to maxint do
    if arr[i]=1 then
      writeln(i);
  close(input);
  close(output);
end.


pascal题目
答:【算法分析】无论第i个瓶子涂什么颜色(但一定不能与第i-1个瓶子的颜色相同),都与涂完前i-1个瓶子所需的最小代价无关,所以这题很显然需要使用动态规划算法 用f[i,j]表示第i个瓶子涂第j种颜色所花费的最小代价,从而得到状态转移方程:f[i,j]:=min{f[i,j],f[i-1,k]+g[i,j]} ...

pascal求解析式问题
答:这是编程中的函数题啊,很有数学味...program getkba;var x1,x2,y1,y2,a,w,ans:integer;function getkb(x1,y1,x2,y2,a,w:integer):integer;var k1,k2,b2,r:real;begin k1:=(y2-y1)/(x2-x1);{求出来第一条直线的斜率} r:=arctan(k1)-(a/180)*pi;{顺时针旋转角度a,arc...

pascal计算题
答:odd是判断奇偶的 odd(x)=true表示是奇数 odd(x)=false表示是偶数 odd(2)=false odd(5)=true ord(ch)是求一个字符的ascll码值的 例:ord(‘A')=65 ord(‘a')=97 另外:ord(false)=0 ord(true)=1 即非0即真 round(x)取x的四舍五入值的 x为real 例:round(4.5)=5 ...

求此题解决思路(PASCAL)
答:动态规划 h[i,j]表示弟i行弟j列向上延伸到的高度 l[i,j]表示满足向上延伸到最高左边延伸到的长度,同样r[i,j]表示右边.时间复杂度O(nm)

如何解这道pascal题?(填空) 数字的地方是需要填的,回答正确追加分数...
答:题目是不是输入每个长方形的长和宽,以0 0结束?然后求面积最大的长方形?答案应是:①max:=0;首先应把算最大面积的max初始化为0 ②(b>0)必须两个都要大于0才能做,否则退出 ③c:=a*b;c作为临时存面积的变量 ④y:=b;如果发现当前面积比我存着的最大面积还要大,就把它替换掉 ⑤readln(...

一道pascal问题
答:正解:var s:real i,n:longint;begin readln(n);s:=1;for i:=2 to n do if n mod 2=0 then s:=s-1/n //循环语句不用加begin,if是一个语句 else s:=s+1/n; //除法比加减法优先运算,不用加括号 writeln(s);end.需要注意的就是这些了 var s,n,i:real;begin readln(n...

一道简单的PASCAL题
答:一道很水的DP,我们用f1[i,j]表示1~I个数,分成j段的最小值,f2[i,j]表示1~I个数,分成j段的最大值,则我们进行状态转移:f1[i,j] = Min(Max(f2[k, j - 1], a[k+1]+A[k+2]+..a[i]), j-1<=k<=i-1)f2[i,j] = Max (Max(f2[k, j - 1], a[k+1]+A[k...

一道pascal简单问题
答:end;begin assign(input,'frac1.in');assign(output,'frac1.out');reset(input);rewrite(output);readln(n);writeln('0/1'); //特殊处理 mid(0,1,1,1); //调用子程序 writeln('1/1'); //特殊处理 close(output);end.这题主要是递归,不过最后好像少了关闭输入文件。+u ...

我想知道这个题目怎么用pascal编程解
答:program asdf;var a,n,i:longint;begin readln(n);if n mod 2=1 then begin a:=(2+n-1)*(n div 2) div 2;(等差数列)end else begin for i:=1 to n do if n mod i=0 then a:=a+i;(穷举)end;writeln(a);end.约数含义我不是很清楚 ...

pascal问题求解
答:挺简单的一道题:var i,j,t,s,n:longint;begin readln(n);n:=n*10-2-8-1;for i:=0 to n div 8 do for j:=0 to n div 2 do begin t:=n-i*8-j*2;if (t>=0)and(t+i+j>27) then inc(s);end;writeln(s);end....