求 pascal 代码!!!Longest Ordered Subsequence Time Limit:2000MS

wm20012022-10-04 11:39:541条回答

求 pascal 代码!!!
Longest Ordered Subsequence



Time Limit:2000MS
Memory Limit:65536KB
64bit IO Format:%I64d & %I64u

Submit
Status





Description
A numeric sequence of ai is ordered if a1 <
a2 < ... <
aN. Let the subsequence of the given numeric sequence (
a1,
a2, ...,
aN) be any sequence (
ai1,
ai2, ...,
aiK), where 1 <=
i1 <
i2 < ... <
iK <=
N. For example, sequence (1, 7, 3, 5, 9, 4, 8) has ordered
subsequences, e. g., (1, 7), (3, 4, 8) and many others. All longest
ordered subsequences are of length 4, e. g., (1, 3, 5, 8).

Your program, when given the numeric sequence, must find the length of its longest ordered subsequence.


Input
The first line of input file contains the length of sequence N. The
second line contains the elements of sequence - N integers in the range
from 0 to 10000 each, separated by spaces. 1 <= N <= 1000

Output
Output file must contain a single integer - the length of the longest ordered subsequence of the given sequence.


Sample Input
7
1 7 3 5 9 4 8

Sample Output
4

已提交,审核后显示!提交回复

共1条回复
nandehulu 共回答了16个问题 | 采纳率100%
经典的最长上升子序列 0.0,有必要熟练掌握 0.0?var
n, i, j, ans:longint;
a, f:array [0..1005] of longint;
begin
readln(n);
for i:=1 to n do read(a[i]);

f[0]:=0;f[1]:=1;a[0]:=-2100000000;
for i:=2 to n do
begin
f[i]:=1;
for j:=1 to i-1 do
if (a[j]f[i]) then f[i]:=f[j]+1;
end;

ans:=0;
for i:=1 to n do
if (f[i]>ans) then ans:=f[i];
writeln(f[i]);
end.这个n是1000,所以O(n^2)的就行了有心情可以研究下这个的O(nlogn)的
1年前

相关推荐

任意一个大于6的整数可被分解成3个素数,求这三个素数(新哥德巴赫猜想)Pascal语言
lzh5191年前1
200cc 共回答了14个问题 | 采纳率100%
var
t,tt:longint;
function prime(x:integer):boolean;
var
i:longint;
begin
if x=1 then prime:=false
else if x=2 then prime:=true
else
begin
prime:=true;
i:=2;
while (i
三、将下面这个数学算式写成PASCAL算术表达式的形式.4+(5×8﹣6)÷2= 4+(5*8-6)/2
三、将下面这个数学算式写成PASCAL算术表达式的形式.4+(5×8﹣6)÷2= 4+(5*8-6)/2
判断一个整数是两位数并且能被5整除的正确的表达式是:
A) (X>10) AND (x MOD 5)
B) (10
juhengli1年前1
njckp 共回答了18个问题 | 采纳率94.4%
1 D
2 A:(x>=20) and (x=60) and (x
pascal 递归的方法做问题1、用递归的方法求1+2+3+……+N的值。2、用递归函数输出斐波那契数列第n项。0,1,
pascal 递归的方法做问题
1、用递归的方法求1+2+3+……+N的值。
2、用递归函数输出斐波那契数列第n项。0,1,1,2,3,5,8,13……
3、输入一个非负整数,递归方法输出这个数的倒序数。例如输入123,输出321。
4、用递归算法将数组A中的N个数倒序输出。
5、用递归方法求N个数中的最大数及其位置。
6、用递归算法将一个十进制数X转换成任意进制数M(M<=16)。
其中第3个 第6个 较为重要 其他可以省略……
小雨浩1年前1
逆风的小丑 共回答了18个问题 | 采纳率100%
我直接写出最重要的把,只写子程序好了。
3:
procedure f(x,s:longint);
begin
if x=0 then begin writeln(s);exit;end;
f(x div 10,s*10+x mod 10);
end;
主程序中: f(x,0);(x是要颠倒的数);
6:
procedure f(x,s,t:longint);
begin
if t=0 then begin writeln(s);exit;end;(我直接用颠倒数字,为了防止最后的零不输出,我就设定了位数)
f(x div 10,s*10+x mod 10,t-1);
end;
procedure f1(x,s:longint);
var
t:longint;
begin
if x=0 then begin f(s,0,t);end;
t:=t+1;
f(x div m,s*10+(x mod m));
end;
主程序中:readln(m);(进制);f1(x,0);(x是要换进制的数);
如果用数组的话可以更好一点,我这样直接
pascal 集合删数有一个集合 其中有x1 x2..xn个数,然后我们可以从左或从右删除i个数,然后没删除一次的代价是
pascal 集合删数
有一个集合 其中有x1 x2..xn个数,然后我们可以从左或从右删除i个数,然后没删除一次的代价是绝对值(xi-xk)*(k-i+1), 若集合中就只有一个数时,则代价就是该数。 当没删除一次后,我们对剩余的数继续一下操作,直至没有数,求最大代价!
用dp(动态规划)帮我做一下,一维就可以,二维的不用写了,没那个必要,谢谢
被rr的犯人1年前1
dancedance 共回答了23个问题 | 采纳率95.7%
楼主把题发一下……,K是什么啊……
或者给个样例
加工生产调度 pascal某工厂收到了n个产品的订单,这n个产品分别在A、B两个车间加工,并且必须先在A车间加工后才可以
加工生产调度 pascal
某工厂收到了n个产品的订单,这n个产品分别在A、B两个车间加工,并且必须先在A车间加工后才可以到B车间加工。
某个产品i在A、B两车间加工的时间分别为Ai、Bi。怎样安排这n个产品的加工顺序,才能使总的加工时间最短。这里所说的加工时间是指:从开始加工第一个产品到最后所有的产品都已在A、B两车间加工完毕的时间。
输入描述 Input Description
第一行仅—个数据n(0 接下来n个数据是表示这n个产品在A车间加工各自所要的时间(都是整数)。
最后的n个数据是表示这n个产品在B车间加工各自所要的时间(都是整数)。
输出描述 Output Description
第一行一个数据,表示最少的加工时间;
样例输入 Sample Input
5
3 5 8 7 10
6 2 1 4 9
样例输出 Sample Output
34
数据范围及提示 Data Size & Hint
0
大量qqwwID1年前1
MARS傲雪 共回答了19个问题 | 采纳率78.9%
加工生产调度
源程序名 prod. (pas, c, cpp) 可执行文件名 prod.exe
输入文件名 prod.in 输出文件名 prod.out
【问题描述】
某工厂收到了n个产品的订单,这n个产品分别在A,B两个车间加工,并且必须先在A车间
加工后才可以到B车间加工.
某个产品i在A,B两车间加工的时间分别为Ai,Bi.怎样安排这n个产品的加工顺序,才能
使总的加工时间最短.这里所说的加工时间是指:从开始加工第一个产品到最后所有的
产品都已在A,B两车间加工完毕的时间.
【输入】
第一行仅—个数据n(0 接下来n个数据是表示这n个产品在A车间加工各自所要的时间(
都是整数).
最后的n个数据是表示这n个产品在B车间加工各自所要的时间(都是整数).
【输出】
第一行一个数据,表示最少的加工时间;
第二行是一种最小加工时间的加工顺序.
【样例】
prod.in prod.out
5 34
3 5 8 7 10 1 5 4 2 3
6 2 1 4 9
【算法分析】
本题是要求一个加工顺序使得总的加工时间最少,而要使加工时间最少,就是让各车间
的空闲时间最少.一旦A车间开始加工,便会不停地进行加工(我们不要去管车间是否能
够一直生产,因为他们有三班,可以24时间不停地运转).关键是B车间在生产的过程中,
有可能要等待A车间的初加工产品.很显然所安排的第一个产品在A车间加工时,B车间是
要等待的,最后一个产品在B车间加工时,A车间已经完成了任务.
要使总的空闲时间最少,就要把在A车间加工时间最短的部件优先加工,这样使得B车间
能以最快的速度开始加工;把放在B车间加工时间最短的产品放在最后加工,这样使得最
后A车间的空闲时间最少.
设计出这样的贪心法:
设Mi=min{Ai,Bi}
将M按照由小到大的顺序排序,然后从第一个开始处理,如果Mi=Ai,则将它安排在从头开
始的已经安排的生产顺序后面,如果Mi=Bi,则将它安排在从尾开始的已安排的生产顺序
前面.
这种安排是否是最少的加工时间,还要通过数学证明.证明如下:
设S= 图3-1是加工作业i时A车间等待B车间的情况:
图3-1 A等B的情况
图3-2是加工作业i时B车间等待A车间的情形:
图3-2 B等A的情况
假设最佳的方案中,先加工作业Ji,然后再加工作业Jj,则有:
如果,则
如果,则
如果,则
如果将作业Ji和作业Jj的加工顺序调整,则有:
其中,
按照上面的假设,有T=5,可以证明当将h拆分为两个不相同的部分并且两部分都大于1时
两部分的乘积大于h.证明如下:
将h分为两部分:a,h-a其中22*a*(a-1)-a*a=a*a-2*a=a*(a-2)
又因为a>=2,所以a*(a-2)>=0,所以a*(h-a)-h>O即a*(h-a)>h.
从上面的证明可以看出,对于指定的正整数,如果其大于等于5,将它拆分为不同的部分
后乘积变大,对于中间结果也是如此.因此可以将指定的n,依次拆成a1+a2+a3+a4+…
+am,乘积最大.
现在的问题是如何拆分才能保证n=a1+a2+a3+a4+…+am呢
可以先这样取:当和不足n时,a1取2,a2取3,…,am-1取m,即从2开始按照自然数的顺序取
数,最后剩余的数给am,如果am4)拆分成从2开始的连续的自然数的和,如果最后
有剩余的数,将这个剩余的数在优先考虑后面项的情况下平均分给前面的各项.
基本算法描述如下:
(1)拆分过程
拆分的数a先取2;
当n>a时做
Begin
选择a作为一项;
a增加1;
n减少a;
End;
如果n>0,那么将n从最后一项开始平均分给各项;
如果n还大于0,再从最后一项开始分一次;
(2)求乘积
设置一个数组来存放乘积,初始状态位数为1,结果为1;
将上面拆分的各项依次跟数组各项相乘并考虑进位;
pascal假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队.跳舞开始时,依次从男队和女队的队头上各
pascal假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队.跳舞开始时,依次从男队和女队的队头上各
pascal语言
1、 队列的应用--舞伴问题
问题叙述
假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一算法模拟上述舞伴配对问题。

【问题分析】
先入队的男士或女士亦先出队配成舞伴。因此该问题具体有典型的先进先出特性,可用队列作为算法的数据结构。
在算法中,假设男士和女士的记录存放在一个数组中作为输入,然后依次扫描该数组的各元素,并根据性别来决定是进入男队还是女队。当这两个队列构造完成之后,依次将两队当前的队头元素出队来配成舞伴,直至某队列变空为止。此时,若某队仍有等待配对者,算法输出配对的结果和此队列中等待者的人数及排在队头的等待者的名字,他(或她)将是下一轮舞曲开始时第一个可获得舞伴的人。
【样例】
输入:BAECF
21456739
输出:B2 A1 E4 C5 F6
3 {等待人数}
7 {第1位等待者的编号}
无忧兔兔1年前1
whoareyou11 共回答了21个问题 | 采纳率100%
var s1,s2:string; i,j,k:integer;begin readln(s1); readln(s2); j:=length(s1); k:=length(s2); if j>k then begin i:=j; j:=k; k:=i end; write(s1[1],s2[1]); for i:=2 to j ...
新手学pascal求解答,习题是郑启华第五章习题5.5
新手学pascal求解答,习题是郑启华第五章习题5.5
利用随机数计算π的值,将随机数的前后两个值(均在0-1之间)作为点的x,y坐标.统计1万个点中,落入半径为1的四分之一圆内的点数n,从而计算出四分之一圆的面积s(s=n/10000).又知四分之一圆的面积为π/4 r^2=π/4,由此即可算出π的值.
利用随机数函数计算π的值,少了两个字.
飞花飘雪0081年前1
guoxmtao 共回答了12个问题 | 采纳率91.7%
PROGRAM MakePi (input, output);
{利用随机数函数计算Pi的值.将随机数的前后两个值(均在0-1之间)作为点的x,y坐标.
统计10000个点中,落入半径为1的四分之一圆内的点数n,从而计算出四分之一圆的面积s
(s=n/10000).又知四分之一圆的面积为Pi*r2/4 = Pi/4,由此即可算出Pi的值}
CONST
MAX = 10000;
VAR
i, n : integer;
Pi, s, seed, x, y: real;
{产生随机数的函数说明}
FUNCTION rand(VAR seed: real): real;
CONST
a = 93.0;
m = 8192.0;
c = 1.0;
BEGIN
seed:= a * seed + c;
seed:= round((seed/m - trunc(seed/m))*m);
rand:= seed/m
END;
BEGIN {主程序}
seed:= 0.7823; n:= 0;
FOR i:=1 TO MAX DO
BEGIN
x:= rand(seed);
y:= rand(seed);
IF x*x + y*y
输入十个数,将其中的偶数放入数组中,并求出这些偶数终大于偶数平均值的数。pascal
林金陞1年前1
leng1324 共回答了18个问题 | 采纳率77.8%
program ygb;
var i,x,n,sum,avg:integer; arr:array[1..10] of integer;
begin
n:=0;
sum:=0;
writeln('输入10个数');
for i:=1 to 10 do
begin
read(x);
if x mod 2 = 0 then
begin
n:=n+1;
arr[n]:=x;
sum:=sum+x;
end;
end;
avg:=sum/n;
writeln('你共输入了',n,'个偶数,平均数',avg,'是,大于平均数的有:');
for i:=1 to n do write(arr[i],' ');
end.
一道pascal的余数(韩信点兵)题!
一道pascal的余数(韩信点兵)题!
某数,除5余4,除6余1,除7余4,求此数.
扒回淡脸1年前1
华纳魅影 共回答了23个问题 | 采纳率87%
最简单的算法:
从1往上递增,然后不断检测是否符合条件,找到目标为止.
pascal高手请进。猜数字guess.pas
pascal高手请进。猜数字guess.pas
味味最近在玩猜数字的游戏,现在她也希望你来玩一下这个游戏。猜数字游戏的规则是这样的,告诉你一个正整数n(2
aa的小女巫20081年前1
caicainiu 共回答了13个问题 | 采纳率92.3%
下面代码需要uses math,sysutils; -- 如果有规定不让用,可以再编写两个函数;如果不需要输入保护,可以修改。program number_guess;
uses math, sysutils;
function factorial(const n : Integer) : Int64;
var
i : Integer;
begin
if n = 0 then exit(1);
factorial := 1;
for i := 2 to n do
factorial *= i;

end;
var
sum, s, sum_of_fact, r_min, r_max : Int64;
i, j, n, num, errcode : Integer;
res, instr : String;
begin
repeat
readln(instr);
val(instr, n, errcode);
if (errcode = 0) and (n in [2..11]) then break;
writeln('Invalid number, try again.');
until 1=0;
repeat
readln(instr);
val(instr, s, errcode);
if (errcode = 0) and (s > 0) then break;
writeln('Invalud number, try again.');
until 1=0;
res := 'not found';
r_min := 1;
r_max := trunc(power(10,n))-1;
for i := r_min to r_max do
begin
sum := 0; num := i;
while (num > 0) do begin sum += num mod 10; num := num div 10;end;
sum *= factorial(n-1);
sum_of_fact := 0;
for j := 0 to n-1 do sum_of_fact += sum * trunc(power(10,j));
if sum_of_fact - i = s then
begin
res := Format('%.*d',[n,i]);
break;
end;
end;
writeln(res);
end.运行:3
1209
123
-------
4
45440
1222
-------
2
90
90
------
2
100
not found
------
1
Invalid number, try again.
2
-10
Invalud number, try again.
91
19
极值问题 pascal极值问题Description 已知m、n为整数,且满足下列两个条件: (1)m、n∈1,2,3,
极值问题 pascal
极值问题
Description
已知m、n为整数,且满足下列两个条件:
(1)m、n∈1,2,3,……,k
(2)(n^2-mn-m^2)^2=1
对给定的k,求m^2+n^2的最大值
Input
只有一行且只有一个正整数:k
( 1
zw961691年前1
three_777 共回答了16个问题 | 采纳率93.8%
经典问题,先要证明m,n是斐波那契数列中的相邻两项。首先证明斐波那契数列中的相邻两项是满足(2)式的,这个非常简单,用数学归纳法就可以了。再证明,如果两个正整数m、n满足(2)式,必有n>=m,且整数n-m、m也满足(2)式(这里的正整数对是有序的)。于是我们可以一直这样找下去:(m,n)=>(n-m,m)=>(2m-n,n-m)=>……
直到括号里的两个数相等(如果一开始就有m=n的话,就不用找了)。很容易证明,如果两个相等的正整数满足(2)式,那么他们都是等于1的。我们可以倒着找回去:(1,1)
pascal 回溯 求解(1)n皇后:要求在n*n格的国际象棋上摆放n个皇后,使其不能互相攻击,即任意两个皇后都不处于同
pascal 回溯 求解
(1)n皇后:要求在n*n格的国际象棋上摆放n个皇后,使其不能互相攻击,即任意两个皇后都不处于同一行、同一列或同一斜线上,输出一共有几种摆法
(2)超级书架:所有N(1 <= N <= 20)头奶牛都有一个确定的身高H_i(1 <= H_i <= 1,000,000 )。设所有奶牛身高的和为S。书架的高度为B,并且保证1 <= B <= S,输入:* 第1行: 2个用空格隔开的整数:N 和 B
* 第2..N+1行: 第i+1行是1个整数:H_i 输出:第1行: 输出1个非负整数,即奶牛们叠成的塔最少比书架高的高度
(3)
有一张包含N(N≤10)块区域的地图,给出M(M≤50)个描述,每组描述A,B表示A,B相邻,相邻的区域不能染同一种颜色,一种有四种颜色,请你用这四种颜色给地图染色,一共有多少中染色方法?
(4)农场主约翰给谷仓安装了一个新的安全系统,并且要给牛群中的每一个奶牛分配一个有效的密码。一个有效的密码由L(3 <= L <=
15)个小写字母(来自传统的拉丁字母集'a'...'z')组成,至少有一个元音('a', 'e', 'i', 'o', 或
'u')和两个辅音(除去元音以外的音节),并且是按字母表顺序出现的(例如,'abc'是有效的,而'bac'不是) 。
给定一个期望长度L和C个小写字母,写一个程序,打印出所有的长度为L、能由这给定的C个字母组成的有效密码。密码必须按字母表顺序打印出来,一行一个。
你的程序只需输出前25,000个有效密码,即使后面还存在有效密码
输入:第一行: 两个由空格分开的整数,L和C
第二行: C个空格分开的小写字母,密码是由这个字母集中的字母来构建的。
输出:
若干行: 每一个输出行包括一个长度为L个字符的密码(没有空格)。输出行必须按照字母顺序排列。如果存在多于25,000个有效密码,你的程序必须在输出25,000个有效密码后停止。
33148481年前1
272757214 共回答了26个问题 | 采纳率88.5%
n皇后,我的似乎不是回溯啊,你先看看吧
var a:array[0..100001]of boolean;
i,j,k,t,l,r,o:longint;
b:boolean;
begin
readln(l,r);
if l>r then begin
o:=l;
l:=r;
r:=o;
end;
for i:=2 to 100001 do a[i]:=true;
for i:=2 to 100001 do begin
b:=true;
if a[i] then begin
for j:=2 to trunc(sqrt(i)) do
if i mod j=0 then begin
b:=false;
break;
end;
if not b then a[i]:=false;
for j:=2 to 100001 div i do a[i*j]:=false;
end;
end;
for i:=l to r do if a[i] then t:=t+i;
writeln(t);
end.
pascal语言题目用pascal语言计算:一个3位数,三个数各不相同,十位数比百位数大,个位数加百位数不是质数。求有多
pascal语言题目
用pascal语言计算:一个3位数,三个数各不相同,十位数比百位数大,个位数加百位数不是质数。求有多少符合以上条件的数。要解释
今晚作业啊,明天中午前收
ab6088711年前1
yqjwl 共回答了21个问题 | 采纳率95.2%
pascal语言题目
var a,b,c:integer;//a,b,c分别为百位数,十位数,个位数
total:integer;//total表示方案数
function pd(k:integer):boolean;//用来判断k是不是质数的函数,若k不是质数,则返回false值
pascal语言 有一个五位数,分别在它的前面和后面添写一个1,得到两个六位数。已知第二个六位数是第一个六位数的三倍,请
pascal语言 有一个五位数,分别在它的前面和后面添写一个1,得到两个六位数。已知第二个六位数是第一个六位数的三倍,请编程求出这个五位数。(提示:用while循环或repeat循环,条件为后者是否前者的3倍。结果为:42857
lvxuepeng5211年前1
永溪的村民 共回答了16个问题 | 采纳率93.8%
var
x:qword;
begin
x:=10000;
repeat
x:=x+1;
until (x+100000)*3=x*10+1;
write(x);
readln
end.
pascal高精度加法题目描述请你用高精度算法求两个非负数a、b的和,这两个数的最长位数为400位。输入输入有多组测试数
pascal高精度加法
题目描述
请你用高精度算法求两个非负数a、b的和,这两个数的最长位数为400位。
输入
输入有多组测试数据,每组数据占一行,分别表示加数a和被加数b,a,b间用空格格开。a,b均为非负数。
输入以EOF结束。
输出
输出对应每行输入,输出对应的a,b值的和。
样例输入
99999999999999999999999999 99999999999999999999999999999999
999999999999999999999999999 1
999999999999999999999999999 8888888888888888888888888888888888
样例输出
100000099999999999999999999999998
1000000000000000000000000000
8888889888888888888888888888888887
0lmu1年前1
i_踏雪无痕 共回答了23个问题 | 采纳率91.3%
wikioi的都过了,望采纳
比楼上那位短多了
const max=2000;
var
sa,sb,sc:ansistring;
b:array[0..max] of integer;
a:array[0..max+1] of integer;
len,la,lb,i,p:integer;
begin
while not eof do
begin
readln(sc);
p:=pos(' ',sc);
sa:=copy(sc,1,p-1);
sb:=copy(sc,p+1,length(sc)-p);
fillchar(a,sizeof(a),0); fillchar(b,sizeof(b),0); //数组初始化
la:=length(sa); lb:=length(sb);
for i:= la downto 1 do a[la-i+1]:=ord(sa[i])-ord('0'); //数据存储
for i:= lb downto 1 do b[lb-i+1]:=ord(sb[i])-ord('0'); //数据存储
if la>lb then len:=la else len:=lb;
for i:=1 to len do
begin
a[i+1]:=a[i+1]+(a[i]+b[i]) div 10; //计算与进位同时处理,
a[i]:=(a[i]+b[i]) mod 10;
end;
if a[len+1]>0 then len:=len+1;
for i:=len downto 1 do write(a[i]);
writeln;
end;
end.
1、 读入一个表达式,以‘#’结束。对该表达式中的圆括号是否配对进行检查,给出相应的提示信息。 pascal
jqysp1年前1
chloe1214 共回答了15个问题 | 采纳率93.3%
楼上判断不了((())的情况(即左右不等)
var
ch:char;
left,right:longint; //其实像楼上只用一个num也行...两个看着方便
ans:boolean;
begin
left:=0;
right:=0;
ans:=true;
repeat
read(ch);
if ch='(' then inc(left);
if ch=')' then inc(right);
if r>left then
begin
ans:=false;
break;
end;
until ch='#';
readln;
if leftright then ans:=false;
writeln(ans);
readln;
end.
左括号个数随时都要大于右括号个数,且最后个数要相等
已调过,望采纳~
一个关于PASCAL的问题(N人出列)
一个关于PASCAL的问题(N人出列)
[程序说明] 设有n个人围坐一圈并按顺时针方向1-n编号。从第s个人开始进行1-m报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m报数,如此进行下去,直到所有的人都出圈为止。现要求按出圈次序,每10人输出占一行,给出这n个人的顺序表。 程序中解此问题的方法是: (1)将1-n个人的序号存入一维数组p中; (2)若第i个人报数后出圈,则将p[i]置于数组的倒数第I个位置上,而原来第i+1至倒数第i个元素依次向前移动了一个位置。 (3)重复第(2)步直至圈中只剩下p[1]为止。 PROGRAM JOSEPH(OUTPUT); CONST N=8; S=1; VAR P:ARRAY[1。。N]OF INTEGER; I,J,K,M,S1,W:INTEGER; BEGIN M:=4;S1:=S; FOR I:=1 TO N DO ; FOR I:=N DOWNTO 2 DO BEGIN S1:= ; IF S1=0 THEN ; W:=P[S1]; FOR J:=S1 TO DO P[J]:=P[J+1]; P[I]:=W; END; FOR I:=N DOWNTO 1 DO BEGIN WRITE(P[I]:4); IF THEN WRITELN; END; END。 填空。 空很大的地方,有4还不晓得是5处。 恩,如果要PAS文件,发QQ邮件给我。
yaya01191年前1
坂田耕牛 共回答了17个问题 | 采纳率94.1%
const n=100; type ar=array [1..n] of integer; var a,b:ar; k1,k2,k:integer; c:array [1..200] of integer; s1,s2:string; procedure fenge(s:string;var d:ar; var kk:integer); var ss:string; i,code:integer; begin i:=length(s); kk:=n; repeat ss:=copy(s,i-3,4); val(ss,d[kk],code); kk:=kk-1; s:=copy(s,1,i-4); i:=i-4; until i
pascal矩阵 输入n(1-9),输出如下列所示的方阵(这里n=5)
pascal矩阵 输入n(1-9),输出如下列所示的方阵(这里n=5)
1 3 6 10 15
2 5 9 14 19
4 8 13 18 24
7 12 17 21 24
11 16 20 23 25
jokk1年前1
咩咩的猪猪 共回答了20个问题 | 采纳率70%
var
i,j,k,o,p,n,m:longint;
a:array[1..9,1..9]of longint;
begin
i:=1; j:=1; k:=1;
read(n);
while kn then
begin
j:=1+i-n;i:=n;
end;
end;
end;
for i:=1 to n do
for j:=1 to n do
if j=n then writeln(a[i,j]:3) else write(a[i,j]:3);
end.
pascal初学者提问[j9]最经济型包装箱型号Time Limit:1000MS Memory Limit:65536
pascal初学者提问
[j9]最经济型包装箱型号
Time Limit:1000MS Memory Limit:65536K
Total Submit:32 Accepted:23
Description
已知有A,B,C,D,E五种包装箱,为了不浪费材料,小于10公斤的用A型,大于等于10公斤小于20公斤的用B型,大于等于20公斤小于40公斤的用C型,大于等于40公斤的小于50公斤的用D型,大于等于50公斤小于80公斤的用E型.现在输入一货物的重量(小于80公斤),找出最经济型的包装箱型号.
Input
输入只有一行,包括一个整数.
Output
输出只有一行(这意味着末尾有一个回车符号),包括1个字符.
Sample Input
8
Sample Output
A
Source
LQ-SUN1年前1
咒oo装怪的老女人 共回答了14个问题 | 采纳率85.7%
program j9;
var a:integer;
begin
readln(a); {读入重量}
if a
Pascal 输入x的值按下列公式计算cos(x).cos(x)=1-x^2/2!+x^4/4!-x^6/6!+...直
Pascal 输入x的值按下列公式计算cos(x).cos(x)=1-x^2/2!+x^4/4!-x^6/6!+...直到最后一项的绝对值小于10^-
直到最后一项的绝对值小于10^-6
qingqing8291年前1
风中残烛- 共回答了29个问题 | 采纳率93.1%
var
x,j,f,c,c0:real;
i:longint;
h:integer;
begin
readln(x);
c:=1;c0:=0;f:=1;
h:=1;i:=0;j:=1;
while abs(c-c0)>1E-6 do begin
c0:=c;
f:=f*sqr(x);
j:=j*(i+1)*(i+2);
i:=i+2;
h:=-h;
c:=c+h*f/j;
end;
writeln(c:10:6);
readln;
end.
1、神秘的杂文(article) he 4、酒厂选址(bre) pascal 详解
1、神秘的杂文(article) he 4、酒厂选址(bre) pascal 详解
1、神秘的杂文(article)
有一篇“杂文”,由一些整数、带小数点的实数和乱七八糟的单词(字符串)组成。整数的范围必须在-70000到70000之间;实
数用一般形式表示,而不用科学计数法,大小也在-70000到70000之间,(输入文件中保证)有效数字不超过10位;凡不符合以
上格式和范围的都是单词,一个单词内部不含空格。
这些内容由空格或者回车分割,连续的空格可能不只一个,也可能有空行。
求除了单词以外的整数和实数的算术平均值。
输入:article.in
由整数、实数和单词间隔形成的文章。每行至多255个字符。文章大小至多100KB。
输出:article.out
文中符合要求的整数和实数的平均值,四舍五入保留小数点后2位。
样例:
输入
3 3.14 aaa 5a
A5 -3
-3.14 5
输出
1.00
4、酒厂选址(bre)
Abstinence(戒酒)岛的居民们酷爱一种无酒精啤酒。以前这种啤酒都是从波兰进口,但今年居民们想建一个自己的啤酒厂。岛
上所有的城市都坐落在海边,并且由一条沿海岸线的环岛高速路连接。酒厂的投资者收集了关于啤酒需求量的信息,即每天各城
市消费的啤酒桶数。另外还知道相邻城市之间的距离。每桶啤酒每英里的运费是1元。日运费是将所需要的啤酒从酒厂运到所有
城市所必需的运费之和。日运费的多少和酒厂的选址有关。投资者想找到一个合适的城市来修建酒厂,以使得日运费最小。
请设计一个程序:从文件bre.in 读入城市的数目、相邻两城市间的距离以及每个城市消费的啤酒桶数,计算最小的日运费,将
结果写到输出文件bre.out中。
输入:bre.in
第一行是一个整数n(5 <= n <= 10000) ,表示城市的数目。 城市沿高速路编号,使得相邻的城市的编号也相邻(城市1和n也
被认为是相邻)。 以下的n行,每行有两个非负整数。第I+1行的数 zi、di分别是城市I每日的啤酒消费量(桶)和从城市I沿高
速路到下一个城市的距离(英里)。高速路的总长不会超过65535 英里。每座城市的日消费量不会超过255桶。
输出:bre.out
一个整数,表示所需的最小日运费(元)。
样例
输入:
6
1 2
2 3
1 2
5 2
1 10
2 3
输出:
41
玉青青1年前1
117402376 共回答了16个问题 | 采纳率93.8%
第一题模拟#include
#include
#include
#include
using namespace std;
char f[300];
int n;
double sum;
int main()
{
freopen("article.in","r",stdin);
freopen("article.out","w",stdout);
while(scanf("%s",f) == 1)
{
int q = 0,e = 0,w = 0;
for(int i = 0 ; i < strlen(f) ; i ++)
{
if(f[i] != '.' f[i] != '-' (f[i]<48 || f[i]>57)) {q=1;break;}
if(isdigit(f[i])) w=1;
if(f[i]=='.'){e++;if(e>1){q=1;break;}}
if(f[i]=='-'&&i!=0){q=1;break;}
}
if(q==1||w==0)continue;
double num=0,p=1;
int q2=0,r=0,q3=0;
for(int i=0;i{
if(f[i]=='-'){q2=1;continue;}
if(f[i]=='.'){q=1,p=10;continue;}
if(f[i]!='0') q3=1;
if(q3==1) r++;
if(q==0) num=num*10+f[i]-'0';
if(q==1) num=num+(f[i]-'0')/p,p=p*10;
}
if(abs(num)>70000) continue;
if(q2==1) num=-num;
n++;
sum+=num;
}
if(n==0) printf("0.00");
else printf("%.2f",sum/n);
return 0;
}
第四题暴力算#include
#include
#include
#include
#include
using namespace std;
const int INF=0x7f7f7f7f;
int a[11000],d[11000];
int n;
int b[11000];
long long cost(int x,int y)
{
int k = a[x];
int t = x + y;
x = min(x,y);
y = t - x;
int ans1 = b[y] - b[x];
int ans2 = b[x] + b[n] - b[y] + d[n];
return min(ans1,ans2) * k;

}
int main()
{
freopen("bre.in","r",stdin);
freopen("bre.out","w",stdout);
scanf("%d",&n);
for(int i = 1 ; i <= n ; i ++)
scanf("%d%d",&a[i],&d[i]);
for(int i = 1 ; i <= n ; i ++)
b[i] = b[i - 1] + d[i - 1];
long long ans = INF;
for(int i = 1 ; i <= n ; i ++)
{
long long sum = 0;
for(int j = 1 ; j <= n ; j ++)
{
if(j == i) continue;
sum += cost(j,i);
}
if(ans > sum) ans = sum;
}
printf("%I64d",ans);
return 0;
}
三取方格数(用pascal的)谢谢了,大神帮忙啊
三取方格数(用pascal的)谢谢了,大神帮忙啊
设有N*N的方格图,我们将其中的某些方格填入正整数, 而其他的方格中放入0。 某人从图得左上角出发,可以向下走,也可以向右走,直到到达右下角。 在走过的路上,他取走了方格中的数。(取走后方格中数字变为0) 此人从左上角到右下角共走3次,试找出3条路径,使得取得的数总和最大。 输入n 输出最大值 样例: 4 1 2 3 4 2 1 3 4 1 2 3 4 1 3 2 4 答案:39
minicatcat1年前1
型秀熊 共回答了15个问题 | 采纳率86.7%
对了哈!数字范围开的小,你自己改。有点长...... Program ex; Var data: Array[1..10, 0..10, 0..10, 0..10] Of Longint; a: Array[1..10, 1..10] Of Integer; i, j, m, n: Integer; Procedure dp(x, y1, y2, y3: Integer); Var max: Longint; Begin If (y1 > n) Or (y2 > n) Or (y3 > n) Or ((x > n) And ((y1 max Then max := data[x + 1, y1 + 1, y2, y3]; If data[x + 1, y1, y2 + 1, y3] > max Then max := data[x + 1, y1, y2 + 1, y3]; If data[x + 1, y1, y2, y3 + 1] > max Then max := data[x + 1, y1, y2, y3 + 1]; If data[x + 1, y1 + 1, y2 + 1, y3] > max Then max := data[x + 1, y1 + 1, y2 + 1, y3]; If data[x + 1, y1 + 1, y2, y3 + 1] > max Then max := data[x + 1, y1 + 1, y2, y3 + 1]; If data[x + 1, y1, y2 + 1, y3 + 1] > max Then max := data[x + 1, y1, y2 + 1, y3 + 1]; If data[x + 1, y1 + 1, y2 + 1, y3 + 1] > max Then max := data[x + 1, y1 + 1, y2 + 1, y3 + 1]; If (y1 = y2) And (y1 = y3) And (y2 = y3) Then data[x, y1, y2, y3] := max + a[x - y1 + 1, y1] Else Begin data[x, y1, y2, y3] := max + a[x - y1 + 1, y1] + a[x - y2 + 1, y2] + a[x - y3 + 1, y3]; If y1 = y2 Then data[x, y1, y2, y3] := data[x, y1, y2, y3] - a[x - y1 + 1, y1]; If y1 = y3 Then data[x, y1, y2, y3] := data[x, y1, y2, y3] - a[x - y1 + 1, y1]; If y2 = y3 Then data[x, y1, y2, y3] := data[x, y1, y2, y3] - a[x - y2 + 1, y2]; End; End; Begin ReadLn(n); For i:=1 To n Do Begin For j:=1 To n Do Read(a[i, j]); ReadLn; End; m := n * 2 - 1; Fillchar(data, sizeof(data), $FF); dp(1, 1, 1, 1); WriteLn(data[1, 1, 1, 1]); End. //程序有点长,不过应该是最简便的,已优化。 //原题是走两遍,优化后是三维的数组。你的题是改动过的,改成走三遍,优化后仍是四维数组。 //所以不要给太大的测试数据,不然内存会爆掉。我的数组开到暂时10,你自己改是注意千万别 //开太大。
pascal 把英文句子中所有的字母o换成e
pascal 把英文句子中所有的字母o换成e
例如:this is a book
this is a beek
花青xy1年前1
小蝶蝶儿 共回答了19个问题 | 采纳率84.2%
var s:string;
i:longint;
begin
readln(s);
for i:=1 to length(s) do
if s[i]='o'
then s[i]:='e';
writeln(s);
end.
希望我的回答能帮到你.
Pascal题:取数设有N 个正整数(1
mayyri1年前1
费十 共回答了13个问题 | 采纳率100%
背包问题。
对于每个数而言只有两种情况,取或不取。据此列状态数组 f=array of [1..50,0..1]
从头到尾扫一遍即可。
初值:
f[1,0]=0;
f[1,1]=a[1];
a[1..n]存放每个数的值;
状态转移方程
不取)f[i,0]=max{ f[i-1,0],f[i-1,1] };
取) f[i,1]=f[i-1,0]+a[i];
最后ans=max{ f[n,0],f[n,1] };
pascal多重循环:A、B两个自然数的和、差、积、商四个数加起来等于243,求A、B两数.
天边的云13971年前2
AA太阳黑子 共回答了15个问题 | 采纳率66.7%
程序如下:
var a,b:longint; //两个数 a,b直接做循环变量
begin
for a:=1 to 243 do //因为a*b要小于等于243 所以没必要超过它
for b:=1 to 243 do //双重循环 同上
if (a mod b=0)and((a+b)+(a-b)+(a*b)+(a div b)=243) //要(a mod b=0)判断是否整除
then writeln(a:5,b:5); //如满足条件则打印
end.
pascal 填数字 - 深度优先搜索
pascal 填数字 - 深度优先搜索

有如图所示的九个小方格,在每个方格中填入0-9中的一个数字,每个数字只能用一次,并使每行的数字组成的自然数都是完全平方数,如图的填法就是一种合法的情况。试编程找出所有正确的填法。

输入

无输入

输出

输出要求:每行输出四个自然数(分别为一位数,二位数,三位数,四位数),表示一种填法,两数之间用空格分隔。例如上图情况输出:1 36 784 9025。

样例输入


样例输出

1 36 784 9025
.
.


lyx7611051年前1
冷月长江 共回答了29个问题 | 采纳率75.9%
我表示老师教的深搜硬生生教成回朔。其实差别不大。深搜不是最简单的题?直接迭代枚举每一个是0-9,重复的不要,每次生成最后一个判断是否符合条件。这个自己写,很轻松。
pascal7一个简单问题一个正整数一般可以分为几个互不相同的自然数的和,如3=1+2,4=1+3,5=1+4=2+3,
pascal7一个简单问题
一个正整数一般可以分为几个互不相同的自然数的和,如3=1+2,4=1+3,5=1+4=2+3,6=1+5=2+4,…。现在你的任务是将指定的正整数n分解成若干个互不相同的自然数的和,且使这些自然数的乘积最大。
【输入】
只一个正整数n,(3≤n≤10000)。
【输出】
第一行是分解方案,相邻的数之间用一个空格分开,并且按由小到大的顺序。
第二行是最大的乘积。
【样例】
输入:
10
输出:
2 3 5
30
fiance3451年前1
yuyang722722 共回答了19个问题 | 采纳率94.7%
program Eugene; var la,lb,i,j,n,k:longint; a,b:array[0..300] of longint; procedure did1; var i,j,k,m:longint; begin la:=1; while n>la do begin a[la]:= la+1; inc(la); n:=n-la; end; dec(la); if n>0 then begin m:=la; while n>0 do begin inc(a[m]); dec(n); dec(m); if m=0 then m:=la; end; end; end; procedure did2; var i,j:longint; begin fillchar(b,sizeof(b),0); b[1]:=1; lb:=1; for i:= 1 to la do begin for j:=1 to lb do b[j]:=b[j]*a[i]; for j:=1 to lb+3 do begin b[j+1] := b[j+1]+ b[j] div 10; b[j]:= b[j] mod 10; end; lb:=lb+4; while (b[lb])=0 do dec(lb) ; end; end; begin readln(n); if n
3道PASCAL问题一些PASCAL问题 从键盘读入10个整数,请将这10个整数按读入的方式逆序建立一个线性链表,并求其
3道PASCAL问题
一些PASCAL问题 从键盘读入10个整数,请将这10个整数按读入的方式逆序建立一个线性链表,并求其中最大数和最小数.
从键盘读入10个整数,请将这10个整数按读入的顺序建立一个线性链表,找出其中的最大值,并将其删除。
现有一从小到大排好序的数列,请你利用这n个有序数按读入的顺序建立一个线性链表。从键盘读入x 的值,在一个这个线性链表中查找x的值,如果存在x的值,则删除x的值,如果不存在x的值,则将x插入相应的位置,使得线性链表仍然有序。
wangbibn1年前1
Lorry168 共回答了19个问题 | 采纳率84.2%
第一题:var a:array[1..10]of longint; i,maxans,minans:longint;function max(x,y:longint):longint;begin if x>y then exit(x) else exit(y);end;function min(x,y:longint):longint;begin if xy then...
PASCAL难题题目描述在n个数组成的序列a中,任意选出m个数字使这m个数的极差(这m个数中最大值与最小值之差)最小。输
PASCAL难题
题目描述
在n个数组成的序列a中,任意选出m个数字使这m个数的极差(这m个数中最大值与最小值之差)最小。
输入
第一行输入n,m。
第二行n个数字,表示这个序列。
输出
输出题目要求的极差的最小值。
样例输入
【输入样例1】
6 3
1 3 5 7 8 4
【输入样例2】
10 9
2 5 234 4356 3 2 43 5 3 4
样例输出
【输出样例1】
2
【输出样例2】
232
提示

对于10%的数据,1≤n≤10
对于30%的数据,1≤n≤1000
对于100%的数据,1≤n≤100000, m≤n, 0≤a中的数字≤231-1
泣雨骄阳1年前1
一个将qq者的告白 共回答了22个问题 | 采纳率81.8%
var a,b:array[1..1000000]of longint;
i,j,k,t,:longint;
procedure qsort(s,t:longint);
var i,j,x:longint;
begin
i:=s;j:=t;x:=a[i];
while (i
PASCAL题目:随机产生一些1—100之间的整数,直到产生的数为50为止
怪怪的老妇人1年前4
huangdelong 共回答了22个问题 | 采纳率81.8%
楼上的程序好象不对吧
随即产生数字一定是要输出的
我觉得第一个道是不错就是没有输出
应该这样
var
i:longint;
begin
randomize;
repeat
i:=1+random(100);
writeln(i);
until i=50;
end.
如何求具有M个因数的最小整数N Pascal
如何求具有M个因数的最小整数N Pascal
交流与交友
看清题目
zind1年前2
铭泽SUN 共回答了16个问题 | 采纳率81.3%
program adf;
var
m,n,max,
a,b,a1:integer;
num:longint;
begin
n:=0;
read(m);
a:=0;
repeat
a:=a+1;
for b:=1 to trunc(sqrt(a))do
if a mod b=0
then
Question 28 分数: 1 下列可选项,都是硬件的是____。选择一个答案 a. ROM、RAM和Pascal
Question 28
分数: 1 下列可选项,都是硬件的是____。
选择一个答案 a. ROM、RAM和Pascal
b. 硬盘、光盘和软盘
c. WPS、RAM和显示器
d. Windows、ROM和CPU
sdzc_w1年前1
lksdalkfjlkadsjf 共回答了22个问题 | 采纳率86.4%
B
a里pascal是种编程语言
c里wps是类似office的办公软件
d里windows我就不用多说了吧~
Pascal语言1、小玉在游泳目描述小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦。已知小玉第一步能
Pascal语言
1、小玉在游泳
目描述
小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦。已知小玉第一步能游2米,可是随着越来越累,力气越来越小,她接下来的每一步都只能游出上一步距离的98%。现在小玉想知道,如果要游到距离x米的地方,她需要游多少步呢。请你编程解决这个问题。
输入
输入一个数字(不一定是整数),表示要游的目标距离。
输出
输出一个整数,表示小玉一共需要游多少步。
样例输入
4.3
样例输出
3



2、小龟爬呀爬
题目描述
虽然看起来比较稳重,其实小龟偶尔也做运动。 有爱的主人发现它的运动规律是这样的,它每次爬行,如果第一秒能爬n厘米,接下来每秒爬行的距离总是前一次的3/5,如果它在某一秒的爬行距离小于0.05厘米,那么可爱的小龟在下一秒就会睡着。
现在主人观察到了小龟第一秒爬行的距离,请你告诉他,小龟会在第几秒睡着。
输入
一个小数n,表示小龟第一秒爬行的距离。
输出
一个整数,表示小龟会在第几秒睡着。
样例输入
0.1
样例输出
4
moyan791年前1
sunhming 共回答了15个问题 | 采纳率86.7%
1、
var l:longint;
x,m,n:real;
begin
readln(x);
n:=2;
l:=1;
m:=2;
while m=0.05 do
begin
n:=n*3/5;
inc(l);
end;
writeln(l+1);
end.
希望我的回答能帮到你。有不懂的地方再问哦~
pascal的问题,不会- 。- - 。-
pascal的问题,不会- 。- - 。-
题目描述
打印出小于N所有的“水仙花数”.所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
输入
正整数N
输出
从小到大输出所有水仙花数.每行输出一个.
样例输入
154
样例输出
153
玲儿响1年前1
燕子飞菲非 共回答了15个问题 | 采纳率93.3%
var n,a,b,c,i:integer;
begin
readln(n);
if n
pascal试卷一份一、 单选题(共20题,每题3分,30分)1.在pascal语言中,通常将公用程序段用_______
pascal试卷一份
一、 单选题(共20题,每题3分,30分)
1.在pascal语言中,通常将公用程序段用_____________来实现
a) 函数 b) 过程 c) 命令 d) 过程或函数
2. 下列语言中,用________书写的代码是不需要编译就可以在机器上运行的。
a) c++语言 b) 汇编语言 c) pascal语言 d) 机器语言
3.在pascal 语言程序设计中,若程序中含有子程序则程序编译顺序应该是 ,而程序执行顺序则是___________
a) 编译顺序是***程序再子程序,执行则相反
b) 同时编译,而执行则是***程序再子程序
c) 先编译子程序再编译主程序,而执行程序则是***程序再子程序
d) 按书写顺序编译和执行
4.下列程序段中执行后其运行结果是______________
program lian_1;
var y:integer;
function fac (x:integer):integer ;
var t,s :integer ;
begin
if x<=0 then fac:=0
else fac:=x+fac(x-1);
end;
begin
y:=fac(5);
writeln(y);
end.
a) 10 b) 15 c) 12 d) 5
5.已知数组a中,每个元素a[i,j]在存储时要占3个字节,设i从1变化到8,j从1变化到10,分配内存时是从地址sa开始,连续按行分配存储的。试问:a[5,8]的起始地址为( )。
(a)sa + 141 (b)sa + 180 (c)sa + 222 (d)sa + 225
6.设有一个函数的定义如下:
function h(x, y: integer): integer;
begin
h:= (x+y) div (x-y)
end;
执行语句t:=h(4,0))后,变量t的值是( )。
(a)3 (b)-3 (c)1 (d)0
7.程序
program ex1;
var a, b, c: integer;
procedure pro;
var c: integer;
begin
a:=1;
b:=2;
c:=3;
end;
begin
a:=100; b:=200; c:=300;
pro;
writeln(a:5, b:5,c:5);
end.
运行结果是( )
(a)100 200 300 (b)1 2 3 (c)1 2 300 (d)100 200 3
8.下列条件用集合方法表示
1.(m<1)or (m>10)
a、m in [1..10] b、m in [m<1 or m>10]
c、not (m in [1..10]) d、 m not in [1..10 ]
9.设全集e={1,2,3,4,5},集合a={1,4},b={1,2,5},c={2,4},则集合
(a and b)or ~(非)c 为( )。
a) 空集 b) {1} c) {3,5} d){1,5} e) {1,3,5}

10.写出下列程序的运行结果( )
program lx10_3_3(input,output);
type rec=record
a:integer;
b:char;
end;
var p1,p2: ^rec;
begin
new(p1);new(p2);
p1^.a:=90;
p1^.b:=’b’;
p2^.a:=100;
p2^.b:=’c’;
p1:=p2;
writeln(p1^.a:6, p2^.a);
end.
a、16 100 b、100 a c、16 b d、100 100
二、阅读程序,并根据要求写出结果:(15*2=30)
1.program lx10_3_1(input,output);
var p1,p2,p3:^integer;
begin
new(p1);
p1^:=5;
new(p2);
p2^:=8;
p1^:=p1^+p2^;
writeln(p1^:8;p2^);
end.
2、 program ex1_1 ;
var a: integer ;
procedure sum ( x:integer) ;
begin
x:=x+100
writeln(‘x=’,x);
end;
begin
a:=500;
sum(a);
writeln(‘a=’,a);
end.
a x=600 a= 500 b x=600 a=600 c x=600 a=500 d x=500 a=500
觉来泪滴湘江水1年前1
人亡ff息 共回答了19个问题 | 采纳率94.7%
一.DBCBB CBCEA
二.1. 13 8
2. A
pascal语言的程序【入门】找数游戏题目描述一个三位数,各位数字互不相同,十位数字比个位、百位数字之和还要大,且十位、
pascal语言的程序
【入门】找数游戏
题目描述
一个三位数,各位数字互不相同,十位数字比个位、百位数字之和还要大,且十位、百位数字之和不是质数。桐桐想把符合上述条件的三位数找出来,你能帮助她吗?
输入

输出
按照从小到大的顺序,每行输出8个满足条件的三位数,数与数之间有一个空格。
【入门】桐桐数
题目描述
桐桐很喜欢研究数字,特别喜欢研究质数。一天,桐桐发现有一些数字可以表示成两个质数相乘的形式,比如,10=2*5,2、5都是质数,所以10是一个“桐桐数”。所以桐桐决定考考你,她告诉你一个数n,请你判断n是不是“桐桐数”。
输入
一个数n(1<=n<=2^31-1)。
输出
输出一行,如果n是一个“桐桐数”,则输出“It's a Tongtong number.”,否则输出“It's not a Tongtong number.”
样例输入
10
样例输出
It's a Tongtong number.
【基础】整数拆段
题目描述
将一个位数为L(4≤L≤10)的自然数N拆成4段,使各段对应的数的乘积最小。你能编一个程序实现吗?
输入
一个自然数N。
输出
一个整数,最小乘积。
样例输入
321427
样例输出
2268
提示
3*2*14*27=2268
lilacbbl1年前1
96696444 共回答了11个问题 | 采纳率100%
第一题,很简单,我就不说了。
var
g,s,b,k:longint;
begin
k:=0;
for b:=1 to 9 do
for s:=0 to 9 do
for g:=0 to 9 do
if (bs)and(sg)and(gb)and(s>(b+g)) and(not ((s+b) in [2,3,5,7,11,13,17,19])) then
begin
inc(k);
if k=9 then
begin
k:=1;
writeln;
end;
write(b,s,g,' ');
end;
readln;readln;
end.
第二题,求出5W以内的素数,一共有5133个。然后枚举5133^2判断。楼上的做法会超时!
var
a:array[0..6000]of longint;
b:array[0..50000]of boolean;
i,j,n,tot,k:longint;
find:boolean;
begin
fillchar(b,sizeof(b),1);
b[1]:=false;
for i:=2 to 50000 do
for j:=2 to 50000 div i do
b[i*j]:=false;
tot:=0;
for i:=1 to 50000 do
if b[i] then
begin
inc(tot);
a[tot]:=i;
end;
readln(n);
find:=false;
for i:=1 to tot do
if n mod a[i]=0 then
begin
k:=n div a[i];
for j:=1 to tot do
if (k mod a[j]=0)or(a[j]*a[j]>k) then break;
if k mod a[j]0 then
begin
find:=true;
break;
end;
end;
if find then writeln('It''s a Tongtong number.') else
writeln('It''s not a Tongtong number.');
end.
第三题。动态规划。
var
a:array[0..10]of longint;
s:array[0..10,0..10]of int64;
f:array[0..10,0..4]of int64;
n,i,j,k:longint; x:char;
function min(x,y:int64):int64;
begin
if x
Pascal 数字图形输出输出如图所示排列的的数字直角三角形(每排均为左对齐).
1937771年前1
mingren_07 共回答了20个问题 | 采纳率85%
可以直接用for循环
var
l,n,m:integer;{l表示行数,n打印次数,m是打出的数字}
begin
m:=1;
for l:=1 to 5 do
begin
for n:=1 to l do
begin
write(m:4);
inc(m);
end;
writeln;
end;
end.
如何将一个整数分解成2的n次幂相加的形式,如100=2^6+2^5+2^2,PASCAL,附带说明.
如何将一个整数分解成2的n次幂相加的形式,如100=2^6+2^5+2^2,PASCAL,附带说明.
数学方法与PASCAL
ningfan12261年前1
孤心ㄨ浪者 共回答了15个问题 | 采纳率86.7%
利用短除法写出除以2後的商及馀数即可表示之
2 │ 100
商-> 2 │ 50 0 2 │ 25 0 2 │ 12 1 2 │ 6 0 2 │ 3 0
pascal:在下面式子中的二个框内填入一个合适的同样的数字,使等式成立.
pascal:在下面式子中的二个框内填入一个合适的同样的数字,使等式成立.
□3*6528=3□*8256
写出pascal程序(求出□的值)
看答案的质量 100之间
随风飘任逍遥1年前2
hjs1165 共回答了17个问题 | 采纳率94.1%
用的是枚举思想:
var a,b,c,d:longint; /////////定义类型,主要是longint长整型类型
begin /////////////程序开始
b:=6528; ////生成第2个乘积的值
c:=8256; //生成第4分乘积的值
for a:=1 to 9 do ///////循环求出第1个乘积的十位
for d:=0 to 9 do ///////循环求出第3个乘积的个位
if (a*10+3)*b=(30+d)*c ////////判断是否可以构成等式成立
then writeln(a,'3*',b,'=3',d,'*',c); //////////输出等式
end. ///////程序结束
调试……
Running "f:tp7fpc2.0.4bini386-win32solutions.exe "
输出答案:
43*6528=34*8256
Pascal-数学黑洞6174.求证:所有四位数的数字(全相同的除外),均能得到6174.输出掉进黑洞的步数
Pascal-数学黑洞6174.求证:所有四位数的数字(全相同的除外),均能得到6174.输出掉进黑洞的步数
1.“数学黑洞6174”
已知:一个任意的四位正整数.将数字重新组合成一个最大的数和最小的数相减,重复这个过程,最多七步,必得6174.即:7641-1467=6174.将永远出不来.求证:所有四位数的数字(全相同的除外),均能得到6174.输出掉进黑洞的步数.
要求:
(1) 当相减后第一次出现6174,就可认为掉进黑洞
(2) 此题无需输入文件
(3) 输出文件中,应列出所有四位数(相同的除外)对应的黑洞步数.
用PASCAL!
天天的蓝蓝1年前1
星不坠 共回答了25个问题 | 采纳率100%
program asdf;
var
a:array[1000..9998] of integer;
b:array[1..24] of integer;
i,j,k,l,w,x,y,z,w1,x1,y1,z1,xx,yy,ii:Integer;
begin
for i:=1000 to 9998 do
begin
ii:=i;
w:=ii div 1000;
x:=ii div 100-w*10;
y:=ii div 10-w*100-x*10;
z:=ii mod 10;
if not((w=x)and(x=y)and (y=z)) then begin
yy:=1;
for j:=1 to 7 do
for w1:=1 to 4 do
for x1:=1 to 4 do
for y1:=1 to 4 do
for z1:=1 to 4 do
begin
if (w1+x1+y1+z1=1+2+3+4)and(w1*x1*y1*z1=1*2*3*4) then begin
for k:=1 to 4 do begin
xx:=1;
case k of
1:for l:=1 to w1 do begin xx:=xx*10; b[yy]:=b[yy]+w1; end;
2:for l:=1 to x1 do begin xx:=xx*10; b[yy]:=b[yy]+x1; end;
3:for l:=1 to y1 do begin xx:=xx*10; b[yy]:=b[yy]+y1; end;
4:for l:=1 to z1 do begin xx:=xx*10; b[yy]:=b[yy]+z1; inc(yy); end;
end;
end;
end;
end;
for k:=1 to 24 do
for l:=1 to k do
if b[k]>b[l] then begin b[k]:=b[l]+b[k]; b[l]:=b[k]-b[l]; b[k]:=b[k]-b[l]; end;
ii:=abs(b[k]-b[l]);
if ii=6174 then begin a[i]:=j; break; end;
end;
end;
end;
for i:=1000 to 9998 do
writeln(i,':',a[i]);
readln;
end.
Pascal线段树题目有一个2*n的点阵,平行于坐标轴的方向上相邻的点之间可以连边,维护以下操作:(1)在某两点之间连边
Pascal线段树题目
有一个2*n的点阵,平行于坐标轴的方向上相邻的点之间可以连边,维护以下操作:
(1)在某两点之间连边(可以连边的话)
(2)拆除某条边
(3)询问某两点是否连通
看了CQX的课件上说有14中连通情况,但不知道是哪14种,还有就是合并两个区间时的合并操作应该如何处理?
css_2051年前1
巧笑倩兮 共回答了12个问题 | 采纳率83.3%
这是哪里的题目,感觉好像是下面14种:
对于区间[l,r]左边两个点编号l0,l1,右边两个点编号r0,r1,那么就可以有:(=连接的点表示联通,否则不联通)
1.l0,l1,r0,r1
//以上没有连通
2.l0=l1,r0,r1
3.l0,l1,r0=r1
4.l0=r0,l1,r1
5.l0,r0,l1=r1
6.l0=r1,l1,r0
7.l1=r0,l0,r1
//以上一对连通
8.l0=l1,r0=r1
9.l0=r0,l1=r1
//以上两对连通
10.l0=l1=r0,r1
11.l0=l1=r1,r0
12.l0=r0=r1,l1
13.l1=r0=r1,l0
//以上3个连通
14.l0=l1=r0=r1
//全部连通
合并的时候直接把连通的连在一起,好像直接17^2个if,汗,这道题是麻烦题啊……不知出题人写了多长
有三个自然数,分别为a.b.c.他们的和为18,求他们的最大值.pascal变成解答.
有三个自然数,分别为a.b.c.他们的和为18,求他们的最大值.pascal变成解答.
打错了,是求他们的最大的积值!
anniecupol1年前2
求索asd 共回答了22个问题 | 采纳率95.5%
LZ想要pascal解法是吧:
1.正常方法是枚举a,b,c的值
var a,b,c,max:longint;
begin
for a:=1 to 18 do
for b:=1 to 18-a do
begin
c:=18-a-b;
if a*b*c>max then max:=a*b*c;
end;
writeln(max);
end.
2.还有数学方法:
a*b*c
问一道PASCAL题目选人.一个小组共五人,分别为A、B、C、D、E.现有一项任务,要他们中的3个人去完成.已知:(1)
问一道PASCAL题目
选人.一个小组共五人,分别为A、B、C、D、E.现有一项任务,要他们中的3个人去完成.已知:(1)A、C不能都去;(2)B、C不能都不去;(3)如果C去了,D、E就只能去一个,且必须去一个;(4)B、C、D不能都去;(5)如果B去了,D、E就不能都去.编程找出此项任务该由哪三人去完成的所有组合.
fool_farmer1年前2
kelly75 共回答了12个问题 | 采纳率91.7%
var a:array[1..6]of integer;
i:integer;
fin:boolean;
begin
for a[1]:=0 to 1 do
for a[2]:=0 to 1 do
for a[3]:=0 to 1 do
for a[4]:=0 to 1 do
for a[5]:=0 to 1 do
begin
a[6]:=0;
fin:=true;
for i:=1 to 5 do a[6]:=a[6]+a[i];
if a[6]3 then fin:=false;
if (a[1]+a[3]=2)or(a[2]+a[3]=0) then fin:=false;
if (a[3]=1)and(a[4]+a[5]1) then fin:=false;
if a[2]+a[3]+a[4]=3 then fin:=false;
if (a[2]=1)and(a[4]+a[5]=2) then fin:=false;
if fin then
begin
for i:=1 to 5 do
if a[i]=1 then write(chr(ord('A')+i-1));
writeln;
end;
end;
end.
附:
最终结果有3个:1.BCE 2.ABE 3.ABD
跪求高手这题的算法(Pascal)
跪求高手这题的算法(Pascal)
1153: 果园大丰收
Time Limit: 1 Sec Memory Limit: 64 MB
Submit: 353 Solved: 192
[Submit][Status][Web Board]
Description
红领巾果园丰收了n堆果子,明明决定把它们合成一堆。他每一次可合并两堆,消耗的体力为两堆果子数之和。这样经过n-1次合并,就合成一堆了。他总共消耗的体力等于他每次合并时消耗的体力之和。 明明想尽量节省体力。请你计算出他将最少总共消耗多少体力。
Input
包括两行: 第一行:整数N(1<=N<=50),表示果子的堆数。    第二行:n个整数,以空格相隔,其中第i个整数Ai(1<=Ai<=100)表示第i堆果子数。
Output
明明最少总共消耗的体力值。(测试数据会保证这个值在长整型范围)
Sample Input Copy
3
5 3 12
Sample Output Copy
28
HINT
Source
梦中天主141年前1
金色巫师 共回答了21个问题 | 采纳率90.5%
思路:从小加到大是最优的。
算法:
1、对n堆果子a[1],a[2],......,a[n]从小到大排序;
2、s:=a[1]; sum:=0;
i从2到n循环:每次合并消耗体力 s:=s+a[i]; 包含本次的前面合并消耗的总体力 sum:=sum+s;
3、输出sum
var
a:array[1..100] of integer;
i,j,n,t:integer;
s,sum:longint;
begin
readln(n);
for i:=1 to n do read(a[i]);
for i:=1 to n-1 do for j:=i+1 to n do
if a[i]>a[j] then begin t:=a[i]; a[i]:=a[j]; a[j]:=t; end;
s:=a[1];
sum:=0;
for i:=2 to n do begin
s:=s+a[i];
sum:=sum+s;
end;
writeln(sum);
end.
怎么用 Pascal 的 while 语句列出 Fibonacci 数列的前30项?
怎么用 Pascal 的 while 语句列出 Fibonacci 数列的前30项?
Fibonacci 数列前几项为:0,1,1,2,3,5,8,…,其规律是从第三项起,每项均等于前两项之和。求前30项,并以每行5个数的格式输出。
yulin3151年前1
秋天的老土 共回答了22个问题 | 采纳率86.4%
var
n:integer;
a:array[1..30]of integer;
begin
a[1]:=0;
a[2]:=1;
n:=3;
write(a[1],' ',a[2],' ')
while n
pascal一道题求圆的面积给出一个整数n,接下来有n行,每行一个整数r,表示圆的半径输入给出一个整数n,接下来有n行,
pascal一道题求圆的面积
给出一个整数n,接下来有n行,每行一个整数r,表示圆的半径
输入
给出一个整数n,接下来有n行,每行一个整数r,表示圆的半径
输出
输出n行,每行一个实数s,表示圆的面积,保留两位小数
新竹林1年前1
依凡帆 共回答了20个问题 | 采纳率100%
program circle;
var
n,i,r:integer;
begin
readln(n);
for i:=1 to n do
begin
readln(r);
writeln(3.14159*r*r:0:2);
end;
end.
从时间和空间上看我的代码更优秀
PASCAL题5、描述 Description 对一个给定的自然数M,求出所有的连续的自然数段(连续个数大于1),这些连
PASCAL题
5、描述 Description
对一个给定的自然数M,求出所有的连续的自然数段(连续个数大于1),这些连续的自然数段中的全部数之和为M。
例子:1998+1999+2000+2001+2002 = 10000,所以从1998到2002的一个自然数段为M=10000的一个解。
输入格式 Input Format
包含一个整数的单独一行给出M的值(10
Amy_david1年前2
连杀 共回答了20个问题 | 采纳率95%
Jsoi 2004-2005 连云港 夏令营 A 组 第一天试题 1. If and only if M=2*2*2*2*...,there is no answer. 假设: A+(A+1)+(A+2)+......+(A+k)=M, 则 : (2A+k)(k+1)=2M 可以确定 K的范围(A最小=1时k方可最大):maxk(maxk+1)/20)
then print. 再做不出来我也没办法了。
program ss;
var m:longint;
procedure init;
begin
writeln;
write('Input M = ');readln(m);
end;
procedure search;
var t,n:longint;
k:longint;
begin
t:=m div 5;
for n:=1 to t do
for k:=1 to m div n do
if k*(n+(k-1)/2)=m then writeln(n,' ',n+k-1);
end;
BEGIN
init;
search;
END.
Pascal 问题!求高手解答!回答正确给分!!
Pascal 问题!求高手解答!回答正确给分!!
有一组数,由N个小于30000的整数组成,且收尾两个数相邻,编程找出相邻的K个数,其相加之和最大,并给出它们的起始位置。
圣天8881年前1
MARK-HERO-KING 共回答了19个问题 | 采纳率94.7%
你用没给n,k的范围,但应该够。
优化:
var
a:array[1..100000]of integer;
i,j,k,l,n,max:longint;
begin
readln(n,k);
for i:=1 to n do read(a[i]);
for i:=1 to k mod n do max:=max+a[i];
for i:=1 to n do begin
l:=0;
for j:=i to ((i+7)mod n) do l:=l+a[j];{循环累加}
if l>max then max:=l;
end;
writeln(max);
end.
一道PASCAL题 读入10个数,计算它们的和、积、平方和及和的平方
一道PASCAL题 读入10个数,计算它们的和、积、平方和及和的平方
我急用
瞬思莉1年前1
jerryluo 共回答了17个问题 | 采纳率88.2%
var
temp,i,s1,s2,s3,s4:longint;
begin
s1:=0;s2:=1;s3:=0;
for i:=1 to 10 do
begin
read(temp);
s1=s1+temp;
s2:=s2*temp;
s3:=s3+sqr(temp);
end;
s4=sqr(s1);
// s1s2s3s4 分别为所求
end.