pascal问题:【暴力】数字K
来源:百度知道 编辑:UC知道 时间:2024/05/22 20:42:26
给一个最多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