pascal问题:【暴力】数字K

来源:百度知道 编辑:UC知道 时间:2024/05/22 20:42:26
Description

给一个最多50位的正整数n,至少加几(非负整数),使得和包含数字k(0~9)

Input

第一行 数字n
第二行 k

Output

答案

Sample Input

5
7

Sample Output

2
var
n:array[0..51]of integer;
i,k,x:integer;
ch:char;
s:string;
flag:boolean;
procedure plus(a:integer);
var t,i:integer;
begin
t:=a;
i:=k+1;
while t<>0 do begin
dec(i);
if i=0 then flag:=true;
n[i]:=n[i]+t;
if n[i]>=10 then begin t:=n[i] div 10;n[i]:=n[i] mod 10;end
else t:=0;
end;
end;

function find(a:integer):boolean;
var i:integer;
begin
find:=false;
if flag=true then
for i:=0 to k do
if n[i]=a then find:=true
else
for i:=1 to k do
if n[i]=a then find:=true;
end;

begin
readln(s);
readln(x);

程序一个小问题,else配对的问题,我给你修改了,正确的程序如下:

{$apptype console}
program exp;
var
n:array[0..51]of integer;
i,k,x:integer;
s:string;
flag:boolean;
procedure plus(a:integer);
var t,i:integer;
begin
t:=a;
i:=k+1;
while t<>0 do begin
dec(i);
if i=0 then flag:=true;
n[i]:=n[i]+t;
if n[i]>=10 then begin t:=n[i] div 10;n[i]:=n[i] mod 10;end
else t:=0;
end;
end;

function find(a:integer):boolean;
var i:integer;
begin
find:=false;
if flag=true then
for i:=0 to k do begin if n[i]=a then find:=true end
else
for i:=1 to k do if n[i]=a then find:=true;
end;

begin
readln(s);
readln(x);
k:=length(s);
fillchar(n,sizeof(n),0);
flag:=false;
for i:=1 to k do
n[i]:=ord(s[i])-ord('0');
if find(x) then begin writeln('0');halt;end;
for i:=1 to 10 d