pascal整数对问题考虑一个整数A(首位不为零),去掉它的任意一个数字后得到整数B(首位可能为零),给出A与B的和N(10

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/09 10:47:54

pascal整数对问题考虑一个整数A(首位不为零),去掉它的任意一个数字后得到整数B(首位可能为零),给出A与B的和N(10
pascal整数对问题
考虑一个整数A(首位不为零),去掉它的任意一个数字后得到整数B(首位可能为零),给出A与B的和N(10

pascal整数对问题考虑一个整数A(首位不为零),去掉它的任意一个数字后得到整数B(首位可能为零),给出A与B的和N(10
开个数组a[1..9999+999],清零.
枚举1-9999,然后找出分别去掉一个数字所有可能的值(如2006就是6、206、200),然后与元素相加(2006就是2012、2212、2206),然后以这些数做下标的a数组中的元素分别加一(2006就是inc(a[2012]),inc(a[2212]),inc(a[2206)).
然后每读一个数,输出以它为下标的a数组元素的值(比如读入34,输出a[34])
然后直到eof(input)结束.
var z:array[0..9999+999]of integer;
a,b,c,d,tp,e,f,g,h:integer;
begin
fillchar(z,sizeof(z),0);
for a:=0 to 9 do
for b:=0 to 9 do
for c:=0 to 9 do
for d:=0 to 9 do
if (a+b+c)>0 then begin
tp:=a*1000+b*100+c*10+d;
e:=a*100+b*10+c;
inc(z[e+tp]);
f:=a*100+b*10+d;
if e<>f then inc(z[f+tp]);
if a+b>0 then begin
g:=a*100+c*10+d;
if (g<>f) and (g<>e) then inc(z[g+tp]);
if a>0 then begin
h:=b*100+c*10+d;
if (h<>e) and (h<>f) and (h<>g) then inc(z[h+tp]);
end;
end;
end;
inc(z[10000]);
while not eof(input) do begin
readln(a);
writeln(z[a]);
end;
end.
判断重复上的方法比较笨拙,不过论数据规模,这个程序不会超时.
本程序在FP2.0下调试通过,TP7下也能用.

看不懂,再详细一点!

pascal整数对问题考虑一个整数A(首位不为零),去掉它的任意一个数字后得到整数B(首位可能为零),给出A与B的和N(10 pascal程序设计 输入一个整数n,n 【急!】Pascal.输入一个整数,输出该数每一位数字的和.第一题:输入一个整数a(0 Pascal习题习题2:a+b(sum.bas/ sum.pas/ sum.c)【问题描述】相信a+b问题对大家来说,应该不陌生了吧.给出两个整数a和b,求a和b的和.【输入文件】第一行一个整数N(N 产生数pascal程序给出一个整数n(n pascal打印数字图形读入一个整数n(n pascal程序(序列)问题描述 有一个非递减的整数序列S1,S2,S3,……,Sn+1(Si pascal 求整数A除以B的循环节 给出整数n,接下来有n行,每行一个整数,求最小值 用pascal做 求由整数a的各位数字构成的最大整数.free pascal 若3/a+1表示一个整数,则整数a可以取哪些值考虑要周全哦~~~~~~~~~~ pascal素数问题编一个程序,计算1-n范围内素数的个数.输入包括多组数据.每组数据仅有一个整数n (1 pascal问题1.利用自定义函数求任意两个整数N~M(0 用递归的方法完成下列问题 求n个整数的积Pascal 用 Pascal 编写一个程序将十进制整数n转换为二进制数.用 Pascal 编写加说明 pascal高精度拆分整数 【问题描述】 输入一个正整数N(不超过一百位),如果N是偶数,则拆分N的各个数字相 pascal输入一个整数,如果它是7的倍数,则输出‘yes’,否则输出‘no’. pascal金字塔编写一个程序,输入两个整数N和K(N,K