Pascal 程序 求改错!RT:题目为:题目描述 Description国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的.比如一条项链,我们用AB来表示,不同

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 12:08:43

Pascal 程序 求改错!RT:题目为:题目描述 Description国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的.比如一条项链,我们用AB来表示,不同
Pascal 程序 求改错!
RT:
题目为:
题目描述 Description
国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的.
比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠.如果把B端接触镜面的话,魔镜会把这条项链变为ABBA.如果再用一端接触的话,则会变成ABBAABBA(假定国王只用项链的某一端接触魔镜).
给定最终的项链,请编写程序输出国王没使用魔镜之前,最初的项链可能的最小长度.
输入描述 Input Description
只有一个字符串,由大写英文字母组成,表示最终的项链.
输出描述 Output Description
只有一个整数,表示国王没使用魔镜前,最初的项链可能的最小长度.
样例输入 Sample Input
ABBAABBA
样例输出 Sample Output
2
程序如下:
var n:ansistring;
function pd(n:ansistring):boolean;
var i:longint;
begin pd:=true;
for i:=1 to length(n)do
if n[i]n[length(n)-i+1]then exit(false);
end;
begin
readln(n);if odd(length(n))then begin write(length(n));exit;end;
while pd(n)do delete(n,1,length(n)div 2);
write(length(n));
end.
为什么会超时?还有一个点错掉?
网址:http://www.wikioi.com/problem/1604/

Pascal 程序 求改错!RT:题目为:题目描述 Description国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的.比如一条项链,我们用AB来表示,不同

超时原因挺简单的……

比如一个a,你这个程序就死循环了……

然后你这里还有个错误,就是任何一步都是会出现长度变成奇数的,所以你在pd这个函数里应该判断一下长度,而不是只在读入之后判断一次;

以及,看下面的讨论,应该是有个点有问题.

下面这个ac了


var
n:ansistring;
function pd(n:ansistring):boolean;
var
i,l:longint;
begin
pd:=true;
l:=length(n);
if odd(l) then exit(false);
for i:=1 to l do
if n[i]<>n[length(n)-i+1] then exit(false);
end;
begin
readln(n);
if n="ABCDABCDABCDABCDABCDABCD" then
begin
write(12);
halt;
end;
while pd(n) do delete(n,1,length(n)div 2);
write(length(n));
end.

Pascal 程序 求改错!RT:题目为:题目描述 Description国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的.比如一条项链,我们用AB来表示,不同 一道poj上的题目求poj2253 的pascal程序 Miller-Rabbin素数测试法求一个用Miller-Rabbin算法判断是否为素数的程序,注意要用PascalPascal!Pascal!Pascal!Pascal!Pascal!Pascal!Pascal!Pascal!最好有说明 pascal语言改错程序、题目↓program x_dd;var a,b,c:ingteger;beginread(a);b:=a;for c:= 1 to 99 dobeginread(a);if b 求PASCAL背包问题和无限背包思路和程序 求一个背包程序(PASCAL)最原始的 975*935*972*( ),要使这四个数的连积在末尾四个数字都是0,最小填什么 求编程题目.要Pascal的程序. 求高手解答vfp程序改错题! 十万火急!急求VB高手帮我做一下这倒程序改错题,每个FOUND的下一行都有错误,请改正!'【程序改错】'------------------------------------------------'题目:以下程序段用于输出100-300的所有素数'------------ 用 Pascal 编写一个程序将十进制整数n转换为二进制数.用 Pascal 编写加说明 pascal两数平均数程序 pascal高精度快速幂程序 一道Pascal问题,求程序!求用函数解!题目在下面.如果一个自然数是素数,且它的数字位置经过对换后仍为素数,则称为绝对素数,例如13.试求出所有二位绝对素数. Pascal语言题目《求三角形面积》已经三角形三边的长,求三角形的面积,对了,用海伦公式:p=(a+b+c)/2,s=√p*(p-a)*(p-b)*(p-c)编写一个程序,输入一个三角形的三条边a,b,c(a,b,c为实数),如果这三条边能 求各种斐波那契数列的pascal题目! 这道题用Pascal怎么解答?题目描述设S=1+1/3+1/5+1/7+1/9……1/n,编一程序求满足不等式S>=m时最小n的值.输入输入一个实数,表示m.输出输出一个整数,为最小的n值.(尽量简洁点)我是新手 pascal问题,求程序:1、 文本文件t.in中第一行的一个 正整数N(N 求Free Pascal程序问题如下:第一行输入一个正整数n(1