2.01.
20
. ( ),
. -
, ,
.
1
,
.
7 ( 32 768
6 ).
, , , 3 (2
[1,20] , ).
,
10 , .
, ,
.
2
- ? QBasic
INKEY$.
- , $,
$ :
$=""
10 : A$=INKEY$
; IF $="" THEN GOTO M10
-
. , .
. , <Enter>.
, .
- getch.
,
QBasic, KeyPressed:
while not KeyPressed;
INPUT $ QBasic
read/readln .
<Enter>.
2_01.bas
R ,
20
DIM A(20)
F$="##:######
"
PRINT "
20 , "
FOR 1=0 19:
INPUT A(I): S=S+A(I): NEXT I
FOR 1=0 TO 19:
PRINT USING F$;I+1;A(I); : NEXT I
INPUT A$
FOR 1=0 TO 19:
PRINT USING F$;I+1;A(I): NEXT I
PRINT "
PRINT USING
" ######"; S
END
2_01.
/* , 20 */
#include <stdio.h>
#include <conio.h>
main() {
int j,s=0,a[20];
clrscr();
printf("
20 , \n"
for(j=0; j<20;
j++) { scanf("%d",&a[j]); s+=a[j]; }
for(j=0;j<20;
printf("%2d:%-6d
",j+l,a[j]>; for(j=0;j<20; j++)
printf("\n%2d:%6d
",j+l,a[j]) ; printf("\n -------\n%9d",s);
getch();
2_01.pas
program io_numbers;
{ ,
20 }
uses Crt;
var
j, s:integer;
a:array [1..20]
of integer; begin
s: =0 ;
clrscr;
writeln('
20 , "!
for j:=1 to
20 do
begin readln(a[j]);
s:=s+a[j]; end;
for j:=l to
20 do write(j:2,':',a[j]:6,' ');
writeln('
';
readkey; clrscr;
for j:=l to
20 do writeln(j:2,':',a[j]:6,' ');
writeln(' --------');
writeln (s:
9).;
readln; end.
2.02.
2.01 ,
.
2.03. 2, 8, 16
. ,
.
1 (QBasic)
? $,
.
kaeaw
2 ()
Itoa,
, .
,
. ,
, % %.
(N = N « 1;), (N & 0x8000)
.
3 ()
- ,
.
. 4
,
32 .
F. 10
.
2_03.bas
REM
2, 8 16
CLS
INPUT "
: ",N&
$=$(N&)
PRINT "
";N&;"= ";
FOR k=l TO LEN(A$)
B$=MID$(A$,k,1)
: '
SELECT CASE
B$
CASE "":
IF k=l THEN PRINT ""; ELSE PRINT "000";
CASE "1":
IF k=l THEN PRINT "1"; ELSE PRINT "001";
CASE "2":
IF k=l THEN PRINT "10"; ELSE PRINT "010";
CASE "3":
IF k=l THEN PRINT "11"; ELSE PRINT "01l";
CASE "4":
PRINT "100";
CASE "5":
PRINT "101";
CASE "6":
PRINT "111";
CASE "7": PRINT "111";
END SELECT
NEXT k
PRINT
PRINT " ";N&;"= ";OCT$(N&)
PRINT " ";N&;"=";HEX$(N&)
END
2_03a.bas
REM
2, 8 16
CLS
INPUT "
: ",n&
$=$(&)
: '
IF n&=0
THEN
PRINT "
0" STOP END IF PRINT "
";&;"= ";
B$=LEFT$($,1}: : ' SELECT CASE B$
SELECT CASE B$
CASE "0": PRINT "";
CASE "1": PRINT "1";
CASE "2": PRINT "10";
CASE "3": PRINT "11";
CASE "4": PRINT "100";
CASE "5": PRINT "101";
CASE "6": PRINT "111";
CASE "7": PRINT "111";
END SELECT
FOR K = 2 TO LEN(a$)
B$ = MID$(a$, K, 1)
SELECT CASE B$
CASE "0": PRINT "000";
CASE "1": PRINT "001";
CASE "2": PRINT "010";
CASE "3": PRINT "011";
CASE "4": PRINT "100";
CASE "5": PRINT "101";
CASE "6": PRINT "111";
CASE "7": PRINT "111";
END SELECT
NEXT K
PRINT
PRINT " ";n&;"= ";OCT$(n&)
PRINT " ";n&;"= ";HEX$(n&) END
END
2_03.
/* 2, 8 16 */
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
main()
{
long N;
char a[33];
clrscr();
printf(" : ") ;
scanf("%ld",&N);
if(N==0) {
printf("\n = 0") ;
exit(1);
}
ltoa(N,a,2);
/* */
printf("\n B %ld = %s",N,a);
ltoa(N,a,8);
/* */
printf("\n %ld = %s",N,a);
ltoa(N,a,16);
/* */
printf("\n %ld = %s",N,a);
getch();
}
2_03.pas
program _2_8__16;
{
2, 8 16 }
uses crt; var
N1,N:longint;
a:array [0..31]
of byte;
j,k:byte;
s:char; begin
clrscr;
write(' : ');
readln(N);
if N=0 then
begin
writeln('
= 0');
exit;
end;
N1:=N;
for j:=0 to 31 do
a[j]:=0;
while Nl<>O
do
begin
a[j]:=N1 mod
2; { }
dec(j);
N1:=N1 div 2;
end;
write(' ',N,'=');
for k:=j+l to 31
do write(a[k]:1);
writeln;
N1:=N;
for j:=0 to 10 do a[j]:=0;
while N1<>0
do begin
a[j]:=Nl mod
8; { )
dec(j);
N1:=N1 div 8;
end;
write (' ',N,'=');
for k:=j+l to 10
do write(a[K]:i);
writeln; N1:=N;
for j:=0 to
7 do a[j];=0;
while N1<>0
do begin
a[j]:=N1 mod
16;
dec(j);
N1:=N1 div 16;{
}
end; write('
',N,'=');
for k:=j+l to
7 do begin
if a[k]<10
then s:=chr(ord('0')+a[k]}
else s:=chr(ord('A')+a[k]-10);
write (s) ;
end;
readln;
end.
2.04. r
num_to_str (, ),
num .
, num 4- ,
r |2, 16]. ,
9, , , ... , F.
1 ()
,
(r = 2,8,16),
.
( r > 10) "".
. q 10 ,
, ,
q-10 . ,
, .
.
2 (QBasic)
,
, ,
AS LONG, AS STRING, AS INTEGER, %, &,
$ . ""
.
$ = A$ + CIF$
$ = CIF$+A$.
3 ()
,
, r = 2 (. . 32
).
, , .
( , . .) .
strlen string, h.
2_04.bas
REM
r
DECLARE FUNCTION
NToStr$(NUM&,R%)
CLS
INPUT "
: ",N&
PRINT "
: "
FOR J%=2 TO
16
PRINT " ";
J%,N&;"=
";NToStr$(N&,J%) NEXT J% END
FUNCTION NToStr$(NUM&,R%)
A$="": MS=NUM& DO
CIF=M& MOD R% : '
IF CIF<10
THEN
A$=CHR$(ASC("0")+CIF)+A$
: ' ASCII ELSE
A$=CHR$(ASC("A")+CIF-10)+A$
END IF
&=(&-CIF)/R%
: '
LOOP UNTIL M&=0
NToStr$=A$ END FUNCTION
2_04.
/* r */
#include <stdio.h>
# include <conio.h>
char *num_to_str
(long num, char r) ;
void main (void)
{
long N;
char j ;
printf ("\n
");
scanf ("%ld",&N);
printf ("
:\n")
for(j=2; j<17;
j++)
printf ("\n
%2d = %s", j ,num_to_str (N, j ) ) ;
getch ( ) ;
}
char *num_to_str(long
num, char r) {
static char a[33];
char cif, k,
count=0; do {
cif=num % r;
/* */
if(cif<10) a[count++]='0'+cif;
/*
ASCII, 10 */
else a[count++]='A'+cif-10;
/*
ASCII, 9 */
num=num/r;
/*
*/ }
/* */
while (num != 0);
a[count--]=00;
for(k=0; k<=count/2;
k++)
{ cif=a[count-k];
a[count-k]=a[k]; a[k]=cif; } return a; }
2_04.pas
program num
to pos;
{
}
var
N:longint;
j:byte;
function num_to_str(num:
longint;r:byte):string; var
a:string[33];
cif,k:byte;
begin
a:='';
repeat
cif:=num mod r; { }
if (cif<10) then a:=chr(48+cif)+a
{
ASCII, 10 }
else a:=chr(65+cif-lO)+a;
{
ASCII, 9 }
num:=num div
r; { }
until (num=0);
num_to_str:=;
end; begin
write('
- ');
readln(N);
writelnf'Ero
:']
for j :=2 to
16 do
writeln('no
',j:2,' = ',num_to_str(N,j));
readln; end.
2.05.
N (N < ).
Pmin, N . ,
N=0 Pmin-2
(910 = 10012),
N-1000 Emin=S
(100010 - 13319)
N, Pmin
N ( ).
C
1(o)
,
.
N 15 .
, ,
15 .
, ,
N . , ,
N-1, . . N 11.
2 N-I ,
, .
2 ()
perevod (
) proba ( ).
num_to_str,
, , ,
.
3 (QBasic)
, .
.
.
2_05.bas
R
DECLARE FUNCTION
perevod!(n%,p%,a%())
DECLARE FUNCTION
proba! (a%(),k%)
DIM a%(16)
CLS
INPUT "
[0,30000] : ",n%
FOR p%=2 TO
n%-l
k%=perevod(n%,p%,a%()) : ' -
IF proba(a%(),
k%) 0 THEN
PRINT "
FOR i = 0
k% - 1
PRINT TAB(0);%(i);"*";%;
"^";k%-i;"+";
NEXT i
PRINT :
PRINT a% (0);"*";p%;"^";0
END
END IF
NEXT p%
END
FUNCTION perevod
(n%,p%,a%())
REM
n
R -
m%=n%
FOR i=0 TO 15
a%(i)=m% MOD
p%
m%=(m%-a%(i))/p%
IF m%=0 THEN perevod=i: EXIT FUNCTION
NEXT i
END FUNCTION
FUNCTION proba
(a%(),k%)
REM ,
k
REM
- , proba=l
proba=l
FOR i=0 TO k%/2
IF a% (i)0a% (k%-i) THEN proba=0: EXIT FUNCTION
NEXT i
END FUNCTION
2_05.
/*
*/
#include <conio.h>
#include <stdio.h>
int perevod(int
n, int p, int *a);
int proba(int
*a, int k);
int i ;
main() {
int k,p,N,a[16];
clrscr () ;
scanf("%d",&N);
for (p=2; p<N;
p++)
k=perevod(N,
p, a); /* - */
if (proba(a,k)==0)
continue;
printf("
= %d\n",p);
for(i=0; i<=k; i++)
printf("%d
",a[i]);
break;
getch(); }
int perevod(int
n,int p,int *a) /*
-
*/
for(1=0; 1<1;
1++)
a[i]=n % ;
n=n/;
if(n==0) return
i;
}
int proba (int
*a, int k)
/* ,
k
-
, proba=l */ {
for(i = 0; i
<= k/2; 1++)
if(a[i] != a[k-i])
return 0; return 1 ;
2_05.pas
program min_base;
{
}
uses Crt;
var
i, k, p,N: integer;
a:array [0..15] of integer;
function perevod(n,p:integer) :integer;
{
n
-
}
begin
for i:=0 to 15 do
begin
a[i]:=n mod p;
n:=n div p;
if n=0 then
begin perevod:=i;
exit;
end;
end;
end;
function proba(k:integer):integer;
{ ,
k
- , proba=l }
begin
for i:=0 to k div 2 do
if a[i]<>a[k-i] then
begin proba:=0;
exit;
end;
proba:=1;
end;
begin clrscr;
writeln(' ');
writeln(' ');
readln(N);
for p:=2 to N do
begin
k:=perevod(N,p);
if proba(k)=0 then continue;
writeln(' = ',p);
for i:=0 to k do writeln(a[i]);
break;
end;
readln;
end.
2.06.
sum_dig(n), .
n.
1 ()
, . -
10 .
2 (OBasic)
10. QBasic
, , , 15
10 1, 2.
3 (, )
, do () repeat ()
.
2_06.bas
R
DECLARE FUNCTION
SUMDIG (N&)
CLS
INPUT "
";&
K=SUMDIG(M&)
PRINT "
= ";
END
FUNCTION SUMDIG(N&)
IF N&<0
THEN N&=-N& : '
RESULT=0
DO
RESULT=RESULT+(N& MOD 10&) : '
N&=(N&-(N&
MOD 10&))/10& : '
LOOP WHILE N&<>O
SUMDIG=RESULT
END FUNCTION
2_06.
/* */
#include <stdlib.h>
int sum_digits(long N);
main()
}
long M;
printf ("\n : ");
scanf ("%ld",
&M) ;
printf ("\n = %d", sum_digits (M) ) ;
getch ( ) ;
}
int sum_digits
(long N) {
int Result=0;
N=labs (N) ; /* */
do {
Result=Result+N%10; /* */
N=N/10; /*
*/ }
while (N != 0) ;
return Result;
}
2_06.pas
program sumdigits;
{
}
var
M:longint;
function sum_digits
(N: longint) : integer;
const
Result : integer=0 ;
begin
if N<0 then N:=-N;
{
} repeat
Result :=Result+N mod 10; { }
N:=N div 10; { }
until N=0;
sum_digits : =Result;
end;
begin
write ( ' : ' ) ;
readln (M) ;
writeln('
=',sum_digits(M)! readln;
end.
2.07. ""
luck(n),
[0, 999999]. true () i (, QBasic),
"" ,
.
2_07.bas
REM ""
DECLARE FUNCTION LUCK(M AS LONG)
INPUT "
";N& IF LUCK(N&)=1 THEN
PRINT "
- " ELSE
PRINT "
" END IF END
FUNCTION LUCK(M
AS LONG)
REM
REM
LUCK=1
DIM A(6)
LUCK=0
IF M<0 OR
M>999999 THEN
PRINT "luck : ":
EXIT FUNCTION
END IF
FOR i=0 TO 5
A(I)=M MOD 10
: '
M=(M-A(I))/10 : '
NEXT I
IF (A(0)+A(1)+A(2)=A(3)+A(4)+A(5)) THEN LUCK=1
END FUNCTION
2_07.
/* "" */
#include <stdio.h>
int luck(long
M);
main() {
long N;
printf("\n
");
scanf("%ld",&N);
if (luck(N)==l)
printf("\n - ");
else
printf("\n
"); getch(); }
int luck(long M)
/*
luck=l*/ {
int i ; char
a[6];
if((M<0)
|| (M>999999)) {
printf("\nluck : ");
exit(0); }
for(i=0; i<6;.i++)
{
a[i]=M % 10; /* */
M=M/10; /* */
}
if(a[0]+a[l]+a[2]=a[3]+a[4]+a[5]> return 1;
return 0; }
2_07.pas
program lucky_ticket;
{ ""
var
N:longint;
function luck(M:longint):boolean;
{
luck=true }
var
i:integer;
a:array [1..6] of byte;
begin
if (M<0)
or (M>999999) then begin
writeln('luck : ');
exit;
end;
for i:=l to 6 do
begin
a[i]:=M mod 10; { }
M:=M div 10;
{ }
end;
luck:=(a[l]+a[2]+a[3])=([4]+[5]+[6]);
end;
begin
writeln('
');
readln(N);
if luck(N) then
writeln('
- ') else
writelnt'HeT ');
readln;
end.
2.08.
num_digits (n), .
.
: num_digits (1998) =3.
1 ()
10 ,
,
. . ,
, . ,
.
2 (, )
num_digits .
, ,
.
,
.
2_08.bas
R
DECLARE FUNCTION
NumDig!(N&)
CLS
INPUT "
: ", N&
PRINT "
= ";NumDig(N&)
END
FUNCTION NumDig(N&)
REM
N
DIM d(10) :
'
d(i)=0
IF N&<10
THEN NumDig=l: EXIT FUNCTION
DO
k%=N& MOD 10 : '
d(k%)=d(k%)+l : ' , k
N&=(NS-k%)/10
: '
LOOP UNTIL N&=0
FOR k%=0 TO 9 : '
IF d(k%)<>0
THEN s=s+l : ' d(i)=0, i
NEXT k%
NumDig=s
END FUNCTION
2_08.
/* */
#include <stdio.h>
#include <conio.h>
int num_digits(long
N);
main() {
long N;
printf("\n
- ");
scanf("%ld",&N);
printf("\
= %d ",
num_digits(N));
getch(); }
int num_digits(long
N)
/*
N */ {
char d[10]={0,0,0,0,0,0,0,0,0,0}; /* */
int k,s=0;
if(N<10) return 1;
while (N) {
d[N % 10]++; /* */
N=N/10; /*
*/ }
/* */
for(k=0; k<10; k++)
if(d[k]) s++;
return s; }
2_08.pas
program NumDigits;
{
}
var
N:longint;
function num_digits(N:longint):byte;
{
N } var
d:array [0..9] of byte; { }
s,k:byte;
begin
if N<10 then
num_digits:=1
else begin
for k:=0 to 9 do d[k]=0; { }
s: =0 ;
while N<>
0 do begin
inc(d[N mod 10]); { }
N := N div 10; { }
end;
{ }
for k:=0 to 9 do
if(d[k]<>0) then inc(s);
num_digits:=s;
end;
end;
begin
write('
: ');
readln(N);
writeln('
= ',num_digits(N));
readln;
end.
2.09.
digit_in_pos (n,i),
n i n.
0 "" ( ),
. :
n=1985
0-
5;
1-
8;
2-
9;
3-
1;
digit_in_pos
, 1- .
2_09.bas
R
DECLARE FUNCTION
DIGINPOS(N AS LONG,J AS INTEGER)
INPUT " : ";&
FOR K%=0 9
DIGIT=DIGINPOS(M&,%)
PRINT " ";%;" ",DIGIT NEXT K%
END
FUNCTION DIGINPOS(N
AS LONG,J AS INTEGER)
REM
N j
N1&=N
FOR K%=0 TO
J
RESULT=N1&
MOD 10
N1&=N1&-RESULT)/10
NEXT K%
DIGINPOS=RESULT
END FUNCTION
2_09.
/*
*/
#include <stdlib.h>
int digit_in_pos(long
N,int j);
main () {
long M;
int k;
printf("
: ");
scanf("%ld",&M);
for(k=0; k<10;
k++)
printf("\nB
%d %d",k,digit_in_pos(M, k)) ;
getch(); }
int digit_in_pos(long
N,int j)
/*
N j */ {
int Result,k;
for (k=0; k<=j;
k++) {
Result=N % 10;
N=N/10;
}
return Result;
}
2 09.pas
program DigitlnPos;
{
}
var
M:longint;
k:integer;
function digit_in_pos(N:longint;j:integer):integer;
{ N j }
var
Result,k:integer;
begin
for k:=0 to
j do
begin
Result:=N mod 10;
N:=N div 10;
end;
digit_in_pos:=Result;
end;
begin
writeln('
:');
readln(M);
for k:=0 to
9 do
writeln('
',k,' ',digit_in_pos(M,k));
readln;
end.
2.10.
, [0, 999],
N ( < N < 27).
2_10.bas
REM
INPUT "
0 27 : ",n
PRINT " , ";n;" :"
FOR a2%=0 9
FOR a1%=0 TO 9
FOR a0%=0 TO
9
IF a2%tal%+aO%=n
THEN
PRINT USING
"####";100*a2%+10*al%+a0%;
END IF
NEXT a0%,al%,a2%
END
2_10.c
/* */
#include <stdio.h>
#include <conio.h>
main () {
int a2,al,a0,n;
printf("\n
0 27 : ");
scanf("%d",&n);
printf("\n
, %d :\n",n);
for(a2=0; a2<10; 2++)
for(al=0; al<10; al++)
for(a0=0; a0<10;
a0++)
if(a2+al+a0==n)
printf("%4d",100*a2+10*al+a0);
getch(); }
2_10.pas
program numbers;
{
}
var
2,al,aO,n:integer;
begin
write('
0 27 : ');
readln(n);
writeln('
, ',n, ' :');
for a2:=0 to
9 do
for al:=0 to 9 do
for a0:=0 to
9 do
if (a2+al+a0)=n then write(100*a2+10*al+a0:4);
readln;
end.
2.11.
num_to_3tr(n), (|n|
< 1000). ,
. :
num_to_str(-87)
= " ".
1 ()
,
.
, , 1000
"", ""....." ".
("",
"", ..., ""), ("",
"", "") ("", "".....
"") .
, ,
"".
2 ()
num_to_str string.h.
Result .
static, Result
.
,
.
static Result ,
, N=999.
3 (QBasic)
QBasic DATA-READ .
numl$, num2$ num$
, .
( ) ( )
. , 2_11a.bas,
numis, num2$ num3$
DIM SHARED.
4 ()
num1. num2 num3
"".
2_11.bas
R
DECLARE FUNCTION
NumToStr$(m%,numl$(),num2$(),num3$())
CLS
DATA "","","","","","","",""
DATA "","","","",""
.
DATA "","","",""
DATA "","",""
DIM numl$ (20)
FOR k=0 TO 19:
READ numl$(k): NEXT k
DATA "
"," "," "," "
DATA "
"," "(" "," "
DIM num2$(8)
FOR k=0 TO 7:
READ num2$(k): NEXT k
DATA "","CTO
"," "," "," ","
"
DATA "
"," "," "," "
DIM num3$(10)
FOR k=0 TO 9:
READ num3$(k): NEXT k
INPUT "
-999 999: ",n%
PRINT n%;"=
";NumToStr$(n%,numl$(),num2$(),num3$())
END
FUNCTION NumToStr$(m%,numl$(),num2$()
, num3$())
IF m%=0 THEN
NumToStr$=numl$(0): EXIT FUNCTION
IF m%<0 THEN
m%=-m%: Res$=" " : '
dlg100%=m%\100
: '
Res$=Res$+num3$(dig100%)
/
m%=m%-100*dig100%
: "
IF m%=0 THEN
NumToStr$=Res$: EXIT FUNCTION
IF m%<20
THEN NumToStr$=Res$+numl$ (m%) : EXIT FUNCTION
dig10%=m%\10
:' , dig10 >=20
Res$=Res; +num2$
(diglO%-2)
digl%=m% MOD
10 :'
IF digl%<>0
THEN Res$=Res$+numl$(digl%)
NumToStr$=Res$
END FUNCTION
2_11a.bas
R
DECLARE FUNCTION
NumToStr$(m%)
CLS
DATA "","","","","","","",
""
DATA "","","","",""
DATA "","","",""
DATA "","",""
DIM SHARED numl$(20)
FOR k=0 TO 19:
READ numl$(k): NEXT k
DATA "
"," "," "," "
DATA "
"," "," "," "
DIM SHARED num2$(8)
FOR k=0 TO 7:
READ num2$(k): NEXT k
DATA "","
"," "," "," ","
"
DATA "
"," "," "," "
DIM SHARED num3$(10)
FOR k=0 TO 9:
READ num3$(k): NEXT k
INPUT "
-999 999: ",n%
PRINT n%;"=
";NumToStr$(n%) '
END
FUNCTION NumToStr$(m%)
IF m%=0 THEN
NumToStr$=numl$(0): EXIT FUNCTION
IF m%<0 THEN
m%=-m%: ResS-'' " : '
dig100%=m%\100
: '
Res$=Res$+num3$(dig!00%)
:'
m%=m%-100*diglOO%
: '
IF m%=0 THEN
NumToStr$=Res$: EXIT FUNCTION
IF m%<20 THEN NumToStr$-Res$-t-numl$ (m%) : EXIT FUNCTION diglO%=m%\10 :
' ,
dig10>=20 R@s$=R.es$-l-num2$ (diglO%-2) :'
diglS-^m* MOD
10
IF digl%<>0
THEN Res$=Res$+numl$(digll)
NumToStr$=Res$
END FUNCTION
2_11.
/*
*/
#include <stdio.h>
#include <conio.h>
#include <string.h>
char *num_to_str(long
m) ;
main() {
long n;
clrscr() ; m:
printf("
: ");
scanf("%ld",&n);
printf("\n%ld
= %s",n,num_to_str(n));
goto m;
getch(); }
char *num_to_str(long
m)
/*
*/ {
char *numl[]={"","","","",
"","","","","","",
"","","",
"","",
"","","",
"",
"
" }';
char *num2[]=1
" "," "," ",
"
"," ",
"
"," "," "};
char *num3[]=("",
" "," "," "," ",
" ", " "," "/' "/' "} ;
static char Result[50]="";
int digl,dig10,dig100;
if(m==0) return
numl[0]; Result[0]=0x0;
if(m<0) /*
*/ {
m=-m;
strcpy(Result,"
") ; }
diglOO=m/100;
/* */
strcat(Result,num3[diglOO]);
/* */
m=m-100*dig100;
/* */
if (m=0) return Result;
/* - */
if(m<20) /* 20 */
{
strcat(Result,numl[m]);
return Result;
}
diglO=m/10;
/* , diglO >=20 */
strcat(Result,num2[diglO-2]);
digl=m % 10;
/* */
if(digl != 0)
strcat(Result,numl[digl]);
return Result;
}
2_11.pas
program nd_10;
{
)
uses Crt;
var
n:longint;
function num_to_str(m:longint):string;
{
}
label ret;
"const
numl :array
[0. .19] o£ string= (
1
', '', '', '', '', '', '', '','','','','',
'','','', '','','',
'','');
num2:array [2..9]
of string=(
' ','
',' ',' ', ' ',' ',' ','
');
num3:array [0..9]
of string = ('',
' ','
',' ',' ',' ', ' ',' ',' ','
');
var
digl,diglO,diglOO: byte;
Result:string;
begin
if m=0 then
begin
Result:=numl[0];
goto ret;
end;
Result:='';
if m<0 then { }
begin
m:=-m;
Result:='
'; end;
diglOO:=m div
100; { }
Result:=Result + num3[diglOO];
{ }
m:=m-100*diglOO;
{ }
if m=0 then goto ret;
{ - }
if m<20 then begin
{
20 }
Result:=Result+numl [m] ;
goto ret;
end;
dig10:=m div 10;
{ ,
diqlO >=20 }
Result:=Result+num2[dig10]
;
digl:=m mod
10; { }
if dig100 then Result:=Result + numl[digl];
ret:
num_to_str:=Result;
end;
begin
clrscr;
write{'
: ');
readln (n) ;
writeln(n, '
= ' ,num_to__str (n) ) ;
readln; end.
2.12.
sum_bits(n), .
.
1 ()
,
. -1 32
.
2 (QBasic)
QBasic , 2
J&, .
J&=&H80000000 , . . "".
N , ,
30- .
2_12.bas
R
INPUT "
N"/ N&
Js=&H40000000
RESULT=0
IF N&<0
THEN RESULT=1 : ' 1
FOR K=31 TO
I STEP -1
IF N& AND
J& THEN RESULT=RESULT+1 : ' k-
J&=J&/2
: ' NEXT PRINT RESULT END
2_12.
/* */
#include <stdlib.h>
int sum_bits(long
N) ;
main () {
long M;
printf("
: ");
scanf("%ld",&M);
printf("\n
= %d",sum_bits(M));
getch(); }
int sum_bits(long
N)
/* N */
{
int Result=0,k;
unsigned long
j=0x80000000;
for(k=31; k
>= 0; k--) {
if(j & N) Result++;
/* k- */
j=j >>
1; }
return Result;
}
2_12.pas
program sumbits;
{
}
var
M:longint;
function sum
bits(N:longint):integer;
const
Result:integer=0;
j:longint=$80000000;
var
k:integer; begin
for k:=31 downto
0 do
begin
if (N and j)<>0 then inc(Result);
{ k- }
j:=j shr 1;
end;
sum_bits:=Result;
end;
begin
write('
: ');
readln(M);
writeln('
= ',sum_bits(M));
readln; end.
2.13.
lef t_bit (n),
.
. 0 31.
1 ()
(
) . ,
. ,
30- .
( » ), shr, QBasic
2.
2_13.oas
R
DECLARE FUNCTION LeftBit!(N&)
INPUT "
: "/Ms
IF M&=0
THEN PRINT "D " : END
PRINT " ";
LeftBit(M£)
END
FUNCTION LertBil(N&)
REM
N
N=0,
LeftBit=-l
LeftBit=-l
j&=&H40000000
FOR k=30 TO
0 STEP -1
IF (j& AND
N&) THEN ' k- LeftBit-k EXIT FUNCTION
END IF
j&=j&/2 NEXT k
END FUNCTION
2_13.
/* */
#include <stdlib.h>
int left_bit(long
N) ;
main() {
long M;
printf("\n
: ");
scanf("%ld",&M);
if(M==0) {
printf("\n B ");
exit(0); }
printf("\n
%d", left__bit(M));
getch(); }
int left_bit(long N)
/*
N
N=0,
-1 */ {
int k;
long j=0x80000000;
for(k=31; k >=
0; k--) {
if(j & N)
return k;
j=j >>
1;
}
return -1; }
2_13.pas
program LeftBit;
{
}
var
M:longint;
function left_bit(N:longint):byte;
{ N N=0, -1 }
var
k:byte; const
j:longint=$80000000;
begin
left_bit:=-l;
for k:=31 downto 0 do
begin
if (j and N)<>
0 then begin
left_bit:=k;
exit;
end;
j:=j shr 1;
end;
end;
begin
write('
: ');
readln(M);
if M=0 then
writeln('B ')
else
writelnf' ', left_bit(M));
readln; end.
2.14.
max_bits(n),
.
. :
n = 3310
= 100012 max_bits (33) =1
n = 2810
= 111002 max_bits(28) =3
1 ()
,
. ,
, , ,
-1 ( OXFFFFFFFF) 32 . ,
. QBasic
.
2 (QBasic)
,
2.
3 ()
itoa .
1 .
1 ,
- . (N
0) . , ,
( 32 ).
, .
,
.
2_14.bas
R
DECLARE FUNCTION
MaxBitS!(N&,s$)
CLS
INPUT "
: ",&
k%=MaxBits(M&,a$)
PRINT "
:"
PRINT a$
PRINT "
= "; k%
END
FUNCTION MaxBits(NS,s$)
REM N
REM (MaxBits = )
IF N&=0 THEN MaxBits=0: s$="0": EXIT FUNCTION
FOR j=0 TO 31 : ' s$
IF N& AND
&H1 THEN
kBits=kBits+l : '
IF kBits>max THEN max=kBits : '
s$="l"+s$
: ' ELSE
kBits=0 : '
s$="0"+s$
: ' END IF
N&=(N&-k)/2 : '
NEXT j
MaxBits=max
END FUNCTION
2_14.
/* */
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int max_bits(long N);
main ()
{
long M;
char str[33];
clrscr () ;
printf("\n
: ");
scanf("%ld",&M);
printf("
:");
ltoa(M,str,2);
printf("\n%32s",str);
printf("\n
= %d",
max_bits(M));
getch(); }
int max_bits(long N)
/*
N
(max_bits = ) */
{
int k_bits=0,max=0;
char s[33];
if(N==0) return
0;
while (N) /* s$ */
{
if(N & 0x80000000) /* 1 */
{
/* */
k_bits++;
if(k_bits>max) max=k_bits; /* */
}
else
k_bits=0; /* , = 0 */
N=N << 1 ; /* 1 */
}
return max;
}
2_14.pas
program MaxBits;
{
}
uses Crt;
var
M:longint;
str:string[33];
function max_bits(N:longint)rshortint;
{
N
(max_bits = ) }
var
k bits, max:byte;
begin
k_bits:=0;
max:=0;
if N=0 then
begin
max_bits:=0;
exit;
end;
while N<>0 do { s$ }
begin
if (N and $00000001)00 then { 1 }
begin
str:='l'+str;
inc(k_bits); { }
if k_bits>max
then max:=k_bits end else begin
str:='0'+str;
k_bits:=0; { , = 0 }
end;
N:= N shr 1; { 1 }
end;
max_bits:=max;
end;
begin clrscr;
write(' : ') ;
readln(M);
writeln(' = ',max_bits(M));
readln;
end.
2.15.
""
n-
. :
01011010
00101110
-------------
=***=*== ""=4
rasst (ni,n2),
, 32- .
"" nl 2.
1 ()
XOR,
2,
.
.
2_15.bas
REM
DECLARE FUNCTION
NumToBin$(N&)
DECLARE FUNCTION
SumBits!(N&)
CLS
INPUT "
:",N1&
INPUT "
:",N2&
PRINT "
:"
PRINT NumToBin$(N1&)
: ' N1
PRINT NumToBin$(N2&)
: ' N2
PRINT "
= "; SumBits(N1& XOR N2&)
END
FUNCTION NumToBin$(N&)
REM
N
$="":
=&1
IF N&=0
THEN NumToBin$="0": EXIT FUNCTION
FOR J=0 TO 30
IF N& AND
THEN s$="l"+S$ ELSE s$="0"+s$
K=K*2 : '
1
NEXT J
IF N&<0
THEN s$="l"+s$ : '
NumToBin$=s$
END FUNCTION
FUNCTION SumBits
(N&)
J&=&H40000000
RESULT=0
IF N&<0
THEN RESULT=1
FOR K=31 TO
1 STEP -1
IF N& AND
J& THEN RESULT=RESULT+1
J&=J&/2
NEXT
SumBits=RESULT
END FUNCTION
2_15.c
/*
*/
#include <stdlib.h>
int rasst(long
nl, long n2);
char s [ 4 0];
main() {
long M1,M2;
printf("\n
: ");
scanf("%ld
%ld",&Ml,&M2);
printf("\nMl
=%32s",ltoa(Ml,s,2)); /* N1*/
printf("\nM2
=%32s",ltoa(M2,s,2)); /* N2*/
printf("\nXOR=%32s",ltoa(MlAM2,s,2));
printf("\n
= %5d",rasst(M1,M2));
getch();
}
int rasst(long
nl,long n2)
{
int Result=0,k;
long j=0x00000001;
for(k=0; k <32;
k++)
{
/* */
if((j & nl)!=(j & n2)) Result++;
j=j « 1; /* */
}
return Result;
}
2_15.pas
program distance;
{
}
var
Ml,M2:longint;
function rasst(nl,n2:longint):byte;
const
Result:byte=0
;
j:longint=$00000001;
var
k:byte;
n3:longint;
begin
n3:=nl xor n2;
for k:=0 to 31 do { }
begin
if (j and n3)<>0 then inc(Result);
j:=j shl 1;
{ }
end;
rasst:=Result;
end; begin
write('
: ');
readln(Ml,M2);
writeln('
= ',rasst(Ml,M2));
readln; end.
2.16.
invert (n), .
, n
. . :
invert(314159) =951413
invert(-2718)
= -8172
1 ()
,
,
, ,
. ,
10 .
2_16.bas
R
DECLARE FUNCTION
invert!(N&)
CLS
INPUT "
: ",&
PRINT "
";invert(MS)
END
FUNCTION invert(N&)
Res&=0:
sign=SGN(N&) : '
IF N&<0
THEN N&=-N& '
DO
k%=(N& MOD 10) : '
Res&=Res&*10+k% : '
N&=(Ns-k%)/10
: '
LOOP UNTIL N&=0
invert=Res&*sign
: '
END FUNCTION
2_16.
/* */
#include <stdlib.h>
long invert(long
N);
main()
{
' long M;
printf("\n
: ");
scanf("%ld",&M);
printf("\n %ld",invert(M));
getch();
}
long invert(long
N) {/* */
long Result=0, sign=l;
/* */
if(N<0)
{ N=-N; sign=-l;}
while (N!=0)
{
Result=Result*10 + (N % 10);
/* */
N=N/10;
/*
*/
}
return Result*sign;
/* */ }
2._16.pas
program rotate;
{
}
var
N:longint;
function invert(N:longint):longint;
const
Result:longint=0; sign:shortint=l;
begin
if N<0 then { }
begin N:=-N;
sign:=-l;
end;
while (N<>0) do begin
Result:=Result*10+(N
mod 10);{ }
N:=N div 10; { }
end;
invert:=Result*sign; { }
end;
begin
write('
: ');
readln(N);
writeln('
: ',invert(N));
readln;
end.
2.17.
N = a1a2... ak ,
, , NI ak...a2a1.
, a1> . , 1881 , 1812
. paiindrom(n),
. true () 1 (QBasic,
), .
1 ()
,
palindrom invert.
N invert (N).
,
.
2 ()
,
.
STR$ QBasic, Itoa
, str . 2_17a.pas
. ,
,
.
3 (QBasic)
2_l7.bas .
, STR$
. .
MID$,
, .
2_17.bas
REM
?
DECLARE FUNCTION
palindrom!(NS)
LS
DIM noyes$(2)
noyes$(0)=""
INPUT "
: ",&
PRINT "
- "; noyes$(palindrom(M&));" "
END
FUNCTION palindrom(N&)
REM N -
, palindrom = 1
palindrom=l
IF N&<10
THEN EXIT FUNCTION : ' -
s$=STR$(N&)
: '
k%=LEN(s$)
FOR j=2 TO l+k%/2
: '
IF MID$ (s$, j,l)OMID$ (s$,k%+2-j,l) THEN palindrom=0
NEXT j
END FUNCTION
2_17.
/* ? */
#include <stdio.h>
#include <conio.h>
int palindrom(long
N);
main () {
long M;
printf("\n
: ");
scanf("%ld",&M);
if (palindrom(M))
printf("\n - ");
else printf("\
- ");
getch(); }
int palindrom(long N)
{
/* N - ,
palindrom = 1 */
int j,k=l;
char digit[10];
if(N<10)
return 1; /* - */
for(j=0; j<10;
j++)
{
/* */
digit[j]=N%10;
N=N/10; /* */
if(N!=0) k++;
}
for(j=0; j<=k/2;
j++) /* */
if(digit[j]!=digit[k-j-1]) return 0;
return 1;
}
2_17.pas
program Palindroms;
{
? }
var
: longint;
function
palindrom(N:longint):boolean;
{ N - , palindrom = true }
var
j,k:integer;
digit:array [0..9] of byte;
begin
palindr om:
=t rue ;
if N<10 then
exit; { - }
k:=0;
for j:=0 to
9 do { }
begin
digit[j]:=N
mod 10; { N }
N:=N div 10;
{ }
if(N<>0)
then k:=k+l; { N }
end;
for j:=1 to
(k div 2) do { }
if digit[j]odigit[k-j]
then palindrom:=false;
end;
begin
write(' : ');
readln(M);
if palindrom(M)
then
writeln('
- ') else
writeln(' ');
readln;
end.
2_17a.pas
program Palindroms;
{
? }
var
: longint;
const
noyes:array [false..true] of string=('', '');
function palindrom(N:longint):boolean;
{ N - , palindrom = true }
var
j,k:byte ;
s:string[16];
begin
palindrom:=true;
if N<10 then
exit; { - }
str(N,s); {
}
k:=length(s)
;
for j:=l to
(k div 2) do { }
if s[j]<>s[k+l-j]
then palindrom:=false; end; begin
write('
: ');
readln();
writeln('
- ',noyes[palindrom()],' ');
readln;
end.
2.18.
, ,
. ,
k (k < 5).
1 ()
[1000, 9999]
a1a2a2a1,
90 .
2_18.bas
R
,
DECLARE FUNCTION
palindrom!(N&)
CLS
FOR Al=l TO
9: FOR A2=0 TO 9
M&=(((A1*10)+A2)*10+A2)*10+A1
M2&=M&*M&
IF palindrom(M2&)
THEN PRINT M&,M2& NEXT A2, A1 END
FUNCTION palindrom
(N&)
REM N -
, palindrom = 1
palindrom=l
IF N&<10
THEN EXIT FUNCTION : ' -
s$=STR$(N&)
: '
k%=LEN(s$)
FOR j=2 TO l+k%/2
: '
IF MID$ (s$, j,l)OMID$(s$,k%+2-j,l) THEN palindrom=0 NEXT j
END FUNCTION
2_18.
/*
, */
#include <stdio.h>
#include <conio.h>
int palindrom
(long N);
ma in ()
{
long M,M2;
int al,a2;
for(al=l; al<10; al++)
for(a2=0; a2<10; a2++)
{
M=(((al*10)+a2)*10+a2)*10+a1;
M2=M*M;
if(palindrom(M2))
printf ("\=%1d
=%1d",,2) ; }
getch();
int palindromflong
N)
{/* N - , palindrom = 1 */
int j,k=l;
char digit[10];
if(N<10) return 1; /* - */
for(j=0; j<10; j++) /* N */
{
digit[j]=N % 10; N=N/10;
if(N!=0) k++;
}
for(j=0; j <=
k/2; j++) /* */
if(digit[j]!=digit[k-j-1])
return 0;
return 1; }
2_18.pas
program sqr_pal;
{
, }
var
M,M2:longint;
al,a2:integer;
function palindrom(N:longint):boolean;
{ N - , palindrom = true }
var
j,k:integer;
digit:array
[0..9] of byte; begin k:=l;
palindrom:=true;
if N < 10
then exit; { - } for j : =0 to 9 do {
^ N }
begin
digit[j]:=N mod 10; N:=N div 10;
if N00 then inc(k);
end;
for j:=0 to
k div 2 do { }
if digit[j]odigit[k-j-1] then palindrom:=false; end;
begin
for al:=l to 9 do
for a2:=0 to
9 do begin
M:=(((al*10)+a2)*10+a2)*10+al;
M2:=M*M;
if palindrom(M2)
then
writeln('=',M,'
=',2);
end;
readln; end.
2.19.
, N
:
N1+i
= a(i,k)3+ a(i,k-l)3+ ... + a(i,0}3
a (i,k), a(i,k-i),... , a(i,0) NL
(N! = N-J, i > j).
1 ()
1999999999 ,
6562.
Q 6562 , .
NI Q [Ni]
i, 0. ,
Nj, Q[NJ]
- . ,
,
Q.
2 (QBasic)
, ,
MASS.
.
3 ()
, ,
.
:
1 >
1 ( ),
136 ->
244 > -136 ( ),
55 ->
250 -> 133 -> ( ).
2_19.bas
R
DECLARE FUNCTION
nkub& (N&)
DIM MASS(100)
: '
CLS
INPUT "
- ", N&
=0: MAS&(0)=N&
ml: =+1 : '
MASS(K)=nkub&(MASS(K-l))
PRINT "
=";," N =";MAS&(K)
FOR 1=0 -1 : '
IF MAS&(I)=MASS(K)
THEN GOTO m2
NEXT I
GOTO ml m2:
PRINT " ": PRINT " ";1
PRINT "
";-1
END
FUNCTION nkub&(N&)
DIM S AS INTEGER,
M AS LONG S=0: M=N& WHILE M<>0
D=M MOD 10:
M=(M-D)/10 : '
S=S+D*D*D : '
WEND nkub&=S
END FUNCTION
2_19.c
/* */
#include <stdio.h>
#include <conio.h>
long n_kub(long N);
long N;
int i=l,Q[6562];
main ()
{
clrscr();
printf("\n ");
scanf("%ld",&N);
Q[N-l]=i; ml:
printf ("\n a=%2d N=%ld", i,N) ;
N=n_kub(N);
if(Q[N-1]!=0)
/* He ?*/ {
printf("\nHa %d N=%ld",i+l,N);
getch ();
exit(0) ;
}
Q[N-l]=i++; /* Q*/
goto ml;
}
/ *-------------------------------------*
/
long n_kub(long
N)
{
/* */
int k;
long s=0; while
(N)
{
k=N%10;
N=N/10; /*
*/
s+=k*k*k; /* */
}
return s;
}
2_19.pas
program loop
cub
{ }
uses Crt; label
ml; var
N:longint;
Q:array [1..6562]
of integer; i:integer;
function n_kub(N:longint):integer;
{ - }
var
s,k:integer;
begin s:=0;
while (N<>0)
do begin
k:=N mod 10;
N:=N div 10; { }
s:=s+k*k*k; { }
end;
n kub:=s;
end;
begin clrscr;
write(' ');
readln(N);
for i:=l to 6562 do Q[i]:=0;
{ Q}
i:=l;
Q[N]:=1;
ml:
writeln('ar=',i:2, ' N=',N);
N:=n_kub{N);
if Q[N]<>0 then { He ?}
begin
writeln('Ha ',1+1:2,' ');
readln;
halt;
end;
inc(1); { )
Q[N]:=i; { Q }
goto ml;
end.
2.20.
, N .
:
128 = 2*2*2*2*2*2*2
17 =
1 ()
N k = 2, 3, ...
, N . , k
k > N/2. j ,
. J ,
.
2_20.bas
R
CLS
& = 2:
J% = 0
INPUT "
: ", &: 1& = Ms / 2
PRINT M&;
"=";
Ml:
IF MS MOD K&=0
THEN
J=l: M&=M&/K&:
PRINT K&;
IF M&<>l THEN PRINT "*";
ELSE K&=K&+1
END IF
IF K&<=M1& THEN GOTO Ml
IF J=0 THEN PRINT " "
END
2_20.
/* */
#include <stdio.h>
#include <conio.h>
main() {
long M,M1,k=2;
char j=l;
printf("\n : ");
scanf("%ld",&M);
Ml=M/2;
printf("\n%ld=",M);
ml:
if (M % k=0)
{
j=0;
M=M/k;
printf("%ld",k) ;
if(M!=l)printf("*");
}
else k++;
if(k<=Ml) goto ml;
if(j==l)
printf(" ");
getch(); }
2_20.pas
program razlojenie;
{
}
var
M,Ml,k:longint ;
j:boolean;
IF K&<=Ml& THEN GOTO Ml
IF J=0 THEN PRINT " "
END
2_20,
/* */
#include <stdio.h>
#include <conio.h>
main ()
{
long M,M1,k=2;
char j=l;
printf("\n : ");
scanf("%ld",&M);
Ml=M/2;
printf("\n%ld=",M);
ml:
if(M % k==0)
{
j=0; M=M/k;
printf("%ld",k) ;
if(M!=l) printf("*");
}
else k++;
if(k<=Ml) goto ml;
if(j==l) printf (" ");
getch();
}
2_20.pas
program razlojenie;
{
}
var
,1,k:longint;
j:boolean;
label 1;
begin
j:=true; k:
=2 ;
write(' : ');
readln(M);
M1:=M div 2;
write(M,' = ');
1:
if(M mod k)=0
then begin
j:=false;
M:=M div k;
write (k) ;
if Mol then write ('*');
end
else k:=k+l; if k<=Ml then goto 1;
if j then write(' '};
readln; end.
2.21. ""
prime (), .
true () 1 (, QBasic),
.
false .
1 ()
""
, N 2, 3, 5, 7,
9, ..., 2*p+l ( (2*p+l)2 < N).
, N . , ,
9 15, 3. ,
2, 3, 5, 7, 11, 13, ...
(. 2.22).
2_21.bas
DECLARE FUNCTION prime!(N&)
REM
CLS
INPUT "
: ", &
IF prime (M&)=1
THEN
PRINT "
- " ELSE
PRINT " - "
END IF
END
FUNCTION prime(N&)
REM N -
, prime = 1
DIM j AS LONG
IF N&<4
THEN GOTO Ml : ' 2, 3 -
IF N& MOD
2=0 THEN GOTO MO : ' -
REM
FOR j=3 TO SQR(N&)+1
STEP 2
IF N& MOD
j=0 THEN GOTO MO NEXT j
Ml: prime=l:
EXIT FUNCTION M0: prime=0 END FUNCTION
2_21.
/* */
#include <stdio.h>
#include <math.h>
int prime(long
N) ;
main() {
long M;
char *a[]={"",""};
printf("\n
: ");
scanf("%ld",SM);
printf("\n
- %s", a[prime(M)]);
getch(); }
int prime(long N)
{
/* N -
, prime = 1 */
long kmax,j;
if(N<4) return 1; /* 2, 3 - */
if(N % 2==0) return 0; /* - */
/* */
for(j=3; j*j<=N;
j+=2)
if( N % j==0)
return 0; return 1;
2_21.pas
program prostota;
{
}
var
:longint; const
a:array [0..1] of string=('','');
function prime(N:longint}:byte;
{ N - , prime = 1 }
var
j:longint; label ml;
begin
prime:=1;
if N<4 then
exit; { 2, 3 - }
prime:=0;
if N mod 2=0
then exit; { - }
j:=3;
{ }
ml:
if N mod j=0
then exit;
j:=j+2;
if j*j<=N
then goto ml;
prime:=1; end;
begin
writeln ('
: ');
readln();
writeln('
- ', a[prime()]);
readln; end.
2.22.
,
.
2, 3, 4, ... , 1000. ,
2, , . . ,
2. , , 3,
, . . , 3.
5, 7 . .
. ,
, , .
,
maxk .
1 ()
is, i- 2*1+3
1, 1- "", 0 .
3
is.
" "
, 5. "" is
. . is ,
isi.
2 ()
(set).
, ,
.
( ), ( ),
( in).
( 255).
2_22.bas
DEFINT A-Z CLS
=500 DIM
ISI(MAXK+1)
FOR I=0 -1: IS1(I)=1: NEXT I
FOR I=0 TO MAXK
IF ISI(I)=l THEN
'
""
PRIME=I+I+3:
'
N=N+1: '
PRINT USING "#####";
PRIME; : '
K=I+PRIME: '
""
WHILE <=A
REM "" ,
PRIME IS1(K)=0: K=K+PRIME
WEND
END IF
NEXT I
PRINT
PRINT " ";+1; " ";
PRINT " "; N; " "
END
2_22.
#include <stdio.h>
#include <conio.h>
#define maxk
500
main() {
int pr_num,n=0;
char is[maxk+1];
register int
i,k;
clrscr () ;
for(i=0; i<=maxk;
i++) is[i]=l; /* " " */
for(i=0; i<=maxk;
i++)
{if(is[i]==l)
/* "" */
{ pr_num=i+i+3;
/* */
n++; /*
*/
printf("%5d",pr_num); /* */
k=i+pr num; /* "" */
while (<:=mk)
{
/* "" , pr_num */
is[k]=0; k+=pr_num;
}
}
}
printf("\n
%d ", maxk+1);
printf(" %d ", n);
getch();
}
2_22.pas
program sievel;
uses Crt;
const
maxk=500;
n:integer=0;
var
is: array [0..maxk] of byte;
i,k,prime:integer;
begin clrscr;
for i:=0 to maxk do is[i]:=1; { " " }
for i:=0 to maxk do
begin
if is[i]=l then { "" }
begin
prime:=i+i+3; { }
inc(n); {
}
write(prime:5); { }
k:=i+prime;
{ "" }
while k<=maxk
do
begin { ""
, pr_num }
is[k]:=0; inc(k,prime);
end end; end;
writeln;
write(' ',maxk+l, ' ');
writeln(' ',n,' ');
readln;
end.
2_22a.pas
program sieve;
uses Crt; const
maxN=255; (
255} var
primes: set of 2..maxN;
i,j:integer;
begin clrscr;
primes:=[2..maxN]; { }
for i:=2 to
maxN do
if i in primes then { i }
begin
write (i:5); { }
for j : =1 to
maxN div i do
primes:=primes-[i*j]; { , i}
end;
readln;
end.
2.23.
1742 .
,
,
. ,
. ,
, ,
.
, , .
, 2000 .
1 ,
.
, , ,
. ,
.
1 ()
k
+ (n - k). ,
. prime,
. , k = 2,
,
/2.
2_23.bas
DECLARE FUNCTION
prime!(N&)
REM
CLS
INPUT " : ",& IF prime (M&-2)=1 THEN
PRINT M&; "=2-f ";M&-2
FOR j&=l
TO M&/2 STEP 2
IF prime(j&)=l
AND prime (M&-J&)=1 THEN
PRINT M&;"=";j&;"+";M&-j&
END IF
NEXT j& END
FUNCTION prime
(N&)
DIM j AS LONG
IF N&<4
THEN GOTO Ml
IF N& MOD
2=0 THEN GOTO MO
FOR j=3 TO SQR(N&)+1
STEP 2
IF N& MOD j=0 THEN GOTO MO
NEXT j
Ml: prime=l: EXIT FUNCTION MO: prime=0
END FUNCTION
2_23.
/*
*/ tinclude <stdio.h> linclude <math.h>
int prime(long N) ; main()
{
long M,j;
clrscr () ;
printf("\n
: ");
scanf("%ld",&M);
if (prime(M-2)
) printf ("%ld== 2+%ld\t",M,M-2) ;
for(j=l; j <=
M/2; j+=2)
if(prime(j)
&& prime(M-j)) printf("!ld=l31d+%ld\t",
M, j, M-j);
getch(); }
int prime(long
N) {
long kmax,j;
if(N<4) return 1;
if(N%2==0) return 0;
kmax=sqrt(N)+0.5;
for(j=3; j<=kmax;
j+=2)
if(N%j==0) return
0; return 1; }
2_23.pas
program razlojenie;
{
}
var
M:longint;
j:integer; label
m2;
function prime(N:longint):byte;
var
j:longint; label
ml; begin
prime:=l;
if N<4 then
exit;
prime:=0;
if N mod 2=0
then exit; j:=3;
ml: if N mod
j=0 then exit;
J:=J+2;
if j*j<=N
then goto ml;
prime:=1; end;
begin
write ('
: ');
readln(M);
if prime(M-2)=l
then writeln(M,'+',M-2);
j:=3; m2:
if (prime(j)=l)
and (prime(M-j)=1) then writeln(M,'=',j,'+',M-j);
j:=j+2;
if j< M div
2 then goto m2;
readln; end.
2.24.
,
2, 3 5. 10
1, 2, 3, 4, 5, 6, 8, 9, 10 12.
. ,
1000 .
1 ()
,
(
), , 2, 3 5.
1, . .
, .
( ).
. ,
2, 3
5. .
, 1,
-
.
2, .
2 , 3 5 .
3.
2 3 , 5 .
, ,
"" , .
2 ()
kl, k2, k3 ,
2, 3 5. ,
. .
.
2_24.bas ( )
DEFLNG A-Z
DIM Xam(1000)
CLS
Xam(0)=l
PRINT 1,1
FOR J=l TO 999
x2=Xam(k2)*2
x3=Xam(k3)*3
x5=Xam(k5)*5
IF x2<=x3
AND x2<=x5 THEN Xam(J)=x2: k2=k2+l
IF x3<=x2
AND x3<=x5 THEN Xam(J)=x3: k3=k3+l
IF x5<=x2
AND x5<=x3 THEN Xam(J)=x5: k5=k5+l
PRINT USING
"###:########## "; J,Xam(J) ;
REM
IF J MOD 20=0 THEN INPUT A$
NEXT J
END
2_24. ( )
#include <stdio.h>
#include <conio.h>
main() (
long Xam[1000],
2, , 5;
int j;
int k2=0,k3=0,k5=0;
clrscr(); -
Xam[0]-l,-
printf("%4d
%9d",l,l);
for(i=i; j<1000;
j++) {
x2=Xam[k2]*2; x3=Xam[k3]*3;
x5=Xam[k5]*5;
if(x2<=x3 && x2<=x5)
{Xam[j]=x2; k2++;}
if(x3<=x2 && x3<=x5)
{Xam[j]=x3; k3++;}
if(x5<=x2 && x5<=x3)
{Xam[j]=x5; k5++;}
printf("\n%4d %91d",j,Xam[j]);
if(j % 20==0)
getch(); }
getch (); }
2_24.pas ( )
program Hamming;
uses crt;
var
Xam:array[i..1000]
of longint;
x2,x3,x5 : longint;
j:integer; const
k2:integer=l;
k3:integer=l;
k5:integer=l;
begin
Xam[l]:=1;
writeln(l:4,' ',1:10);
for j:=2 to 1000
do
begin
x2:=Xam[k2]*2;
x3:=Xam[k3]*3;
x5:=Xam[k5]*5;
if(x2<=x3)
and (x2<=x5) then
begin
Xam [ j ] : =x2;
inc(k2);
end;
if(x3<=x2)
and (x3<=x5) then
begin Xam[j] := x3; inc(k3);
end;
if (x5 <= x2) and (x5 <= x3) then begin Xam[j] := x5; inc(k5);
end;
writeln(j:4,' ',Xam[j]:10);
if (j mod 20)=0
then readln; end; readln; end.
2_24a.pas ( )
program Hammingl;
uses crt,WinDos;
var
j,Hour,Hourl,min,mini,sec,seel,hsec,hsecl : word; i,k : longint;
begin clrscr;
gettime(Hour,min,sec,hsec);
i:=l; j:=0; repeat k:=i;
while (k mod 2)=0 do k:=k div 2;
while (k mod 3)=0 do k:=k div 3;
while (k mod 5)=0 do k:=k div 5;
if k=l then
begin
{ write(i:10);
} { } inc(j);
end; inc(i);
until j>=1000;
gettime (Hourl,min1,secl,hsecl)
;
writeln;
writeln(Hour,':',min,':',sec,'.',hsec);
writeln(Hourl,':',minl,':',seel,'.',hsecl);
readln; end.
2.25.
m/n,
""
. :
26/65 = 2/5.
, ( < )
, . 10/20, 10/30,
... , 20/30, ... , 80/90, ... .
1 ()
,
10/11
98/99,
.
, . ,
.
2_25.bas
R
CLS
R 10/11 98/99
FOR N=11 TO
99 FOR M=10 TO N-1
T=M/N : '
Nlo=N MOD 10
: '
Nhi=(N-Nlo)\10
: '
Mlo=M MOD 10
: '
Mhi=(M-Mlo)\10
: '
IF Mlo=0 THEN
GOTO 100
""
IF Nlo=Mlo AND
ABS(T-Mhi/Nhi)<.001 THEN PRINT M;"/";N;"=";Mhi;"/";Nhi
END IF
IF Nlo=Mhi AND
ABS(T-Mlo/Nhi)<.001 THEN
PRINT M;"/";N;"=";Mlo;"/";Nhi
END IF
IF Nlo<>0
THEN
IF Nhi=Mlo AND
ABS(T-Mhi/Nlo)<.001 THEN
PRINT M;"/";N;"=";Mhi;"/";Nlo
END IF
IF Nhi=Mhi AND
ABS(T-M1o/Nlo)<.001 THEN
PRINT M;"/";N;"=";Mlo;"/";Nlo
END IF
END IF
100 :
NEXT M NEXT
N END
2_25.
/* */
#include <stdio.h>
#include <conio.h>
#include <math.h>
main() !
char n,m,n_lo,n_hi,m_lo,m_hi;
float t; clrscr();
/*
10/11 98/99 */ for(n=ll; n<100; ++) for(m=10; m<n;
m++) {
t=(float)m/n; /* */
n_lo=n % 10; /* */
n__hi=n/10; /* */
m_lo=m % 10; /* */
m_hi=m/10; /* */
if(m % 10 ==
0) continue;
/*
"" */
i£(n lo==m
lo && n_hi!=0 && fabs (t-m_hi/n_hi) <1.e-3)
printf("\n%d/%d=ld/id",m,n,m_hi,n_hi);
if(n_lo==m_hi
&& n_hi!=0 && fabs(t-m_lo/n_hi)<le-3)
printf ("\n%d/%d=%d/%d",m,n,m_lo,n__ni)
;
i£(n hi==m_lo
££ n__lo!=0 ££ fabs(t-m_hi/n_lo)<le-3)
printf("\n%d/%d=ld/ld",m,n,m_hi,n_lo);
if(n_hi==m_hi
&& n_lo!=0 && fabs(t-m_lo/n_lo)<le-3)
printf("\n%d/%d=%d/%d",m,n,m_lo,n_lo);
}
getch{); }
2_25.pas
program drobi;
{
}
uses crt;
var
n, m, n_lo,
n__hi, m_lo, m_hi: byte ; t:real; begin
clrscr;
{
10/11 98/99 } for n:=ll to 99 do for m:=10 to n-1 do
begin
t:=m/n; {
}
n_lo:=n mod
10; { }
n_hi:=n div
10; { }
m_lo:=m mod
10; { }
m_hi:=m div
10; { }
if m_lo=0 then
continue;
{
"" }
if (n_lo=m_lo)
and (n_hi<>0) and (abs(t-m_hi/n_hi)<le-3) then
writeln(m:3, '/',n:2, ' = ',m_hi:l, '/',n_hi) ;
if (n_lo=m_hi)
and (n_hi<>0) and (abs(t-m_lo/n_hi)<le-3) then
writeln(m:3,'/',n:2,'=',m_1:1,'/',njii);
if (n_hi=m_lo)
and (n_lo<>0) and (abs(t-m_hi/n_lo)<le-3) then
writeln(m:3,'/',n:2,'=',m_hi:l,'/',n_lo);
if (n_hi=m_hi)
and (n__lo<>0) and (abs(t-m_lo/n_lo)<le-3) then
writeln(m:3,'/',n:2,'=',m_lo:1,'/',n_lo);
end; readln;
end.
2.26.
,
, , N
(N = 2 +
2 + 2 + d2). ,
N .
: 4 = 22 = 12 + 12
+ 12 + 12. ,
,
, , , -
.
1 ()
, .
, , ,
:
a<b<c<d<
sqrt(N).
2 ()
N2 ,
N 1, 2. , , N ,
, .
N , ,
, .
,
. PROBA 5 , 4
( = 1) ( = 0)
, , d.
2_26.bas
R
DECLARE SUB
PROBA (Al AS INTEGER, Bl AS INTEGER,Cl AS INTEGER, Dl AS INTEGER,N AS LONG)
INPUT "
- ", N& IF (N& MOD 2)=0 THEN
REM
N -
PROBA 0,0,1,1,N&
PROBA 0, 0,0,0,N&
PROBA 1,1,1,1,N&
ELBE
REM
N -
PROBA 0,0,0,1,N&
PROBA 0,1,1,1,N&
END IF END
SUB PROBA (Al
AS INTEGER,Bl AS INTEGER,Cl AS INTEGER,Dl AS INTEGER,N AS LONG)
'
Q=INT(SQR{N)+.5)
: '
FOR A%=A1 TO
Q STEP 2: S1=A%*A%
FOR B%=B1 TO
Q STEP 2: S2=S1+B%*B%
FOR C%=C1 TO
Q STEP 2: S3=S2+C%*C%
FOR D%=D1 TO
Q STEP 2
IF S3+D%*D%=N
THEN
PRINT "
:"
PRINT "a=";A%,"b=";B%,"c=";C%,"d=";D%
END
END IF
NEXT D%: NEXT
C%: NEXT B%: NEXT A% END SUB
2_26.
/*
*/
#include <math.h>
#include <stdlib.h>
#include <conio.h>
void proba(int
al,int bl,int cl,int dl,long N) ;
main() {
long N;
printf("\n
- ");
scanf("%ld",&N);
if((N % 2)==0) /* N - */
{
proba(0,0,l,l,N);
proba(0,0,0,0,N);
proba(1,1,1,1,N) ;
}
else /* N - */
{ proba(0,0,0,l,N);
proba(0,l,l,l,N);
} }
void proba(int al,int bl,int cl,int dl,long N)
/* */
{ int a,b,c,d,q;
long sl,s2,s3;
q=floor(sqrt(N)+.5);
/* */
for(a=al; a<=q; a+=2)
{
sl=a*a;
for(b=bl; b<=q; b+=2)
{
s2=sl+b*b;
for(c=cl; c<=q; c+=2)
{
s3=s2+c*c;
for(d=dl; d<=q; d+=2)
if (s3+d*d=N)
{
printf("\n :");
printf("\n a=%d b=%d c=%d d=%d",a,b,c,d);
getch();
exit(0);
}
}
}
}
return;
}
2_26.pas
program razlojenie;
{
}
var
N:longint;
procedure proba(al,bl,cl,d1:integer; N:longint);
{ }
var
a,b,,d,q:integer; s1,s2,s3:longint;
begin
q:=round(sqrt(N));
{ }
a:=al;
while a<=q
do begin
sl:-a*a,- b:-b1;
while b<=q do begin s2:=sl+b*b;
c:=cl;
while c<=q do begin s3:=s2+c*c;
d:=dl; while
d<=q do begin
if(s3+d*d=N) then begin
writeln(' :');
writeln('=',,' b=',b,' c=',c,' d=',d);
readln;
exit;
end;
inc(d,2);
end; inc(c,2);
end;
inc(b,2);
end; inc(a,2);
end;
end;
begin
write(' - ');
readln(N);
if odd(N) then begin { N - }
proba(0,0,0,l,N);
proba(0,1,1,1,N);
end else begin { N - }
proba (0, 0,1,1,N) ;
proba(0,0,0,0,N);
proba(1,1,1,1,N);
end;
end.
2.27.
, ,
. :
( ),
, - .
1 ()
(*+*+=) .
, , .
A*+B*+ ,
.
,
,
,
, -
.
2_27.bas
R
DECLARE FUNCTION R!(U!,V!,Ul!,VI!,U2!,V2!)
PRINT " "
INPUT X1,Y1,X2,Y2,X3,Y3
'XI = 0: Yl = 0: X2 = 0: Y2 = 1: X3 = 1: Y3 = 0
PRINT "
" INPUT X, Y
IF (R(X,Y,X1,Y1,X2,Y2)*R(X3,Y3,XI,Yl,X2,Y2)>0
AND R(X,Y,X2,Y2,X3,Y3)*R(X1,Y1,X2,Y2,X3,Y3)>0
AND R(X,Y,X1,Y1,X3,Y3)*R(X2,Y2,X1,Y1,X3
Y3)>0) THEN
PRINT " ": END
END IF
IF (R(X,Y,X1,Y1,X2,Y2)*R(X3,Y3,X1,Y1,X2,Y2)<0
OR R(X,Y,X2,Y2,X3,Y3)*R(X1,Y1,X2,Y2,X3,Y3)<0
OR R(X,Y,X1,Y1,X3,Y3)
*R(X2,Y2,X1.,Y1,X3,Y3)<0) THEN
PRINT " ": END
END IF
PRINT "
" END
FUNCTION R(U,V,U1,V1,U2,V2)
REM
(U,V) ,
R
(U1,V1) (U2,V2)
R=0
IF ((U-U1)*(V2-V1)-(V-V1)*(U2-U1)>0)
THENR=1
IF ((U-U1)*(V2-V1)-(V-V1)*(U2-U1)<0)
THENR=-1
END FUNCTION
2_27.c
/* */
#inclucte <stdio.h>
#include <iconic.
h>
int r(float
u,float v,float ul,float vl, float u2,float v2);
main () {
float X0,y0,xl,yl,x2,y2,x3,y3;
float k012,k012,
k023, k123, K312, k213;
printf("\n
\");
scanf("%f
%f %f %f %f %f",&xl,&yl,&x2,&y2,&x3,&y3);
printf{"\n
\n");
scanf("%f
%f",&x0,&y0);
k012=r(x0,y0,xl,yl,x2,y2);
k312=r(x3,y3,xl,yl,x2,y2);
k023=r(x0,y0,x2,y2,x3,y3);
k123=r(xl,yl,x2,y2,x3,y3);
k013=r(x0,y0,xl,yl,x3,y3);
k213=r(x2,y2,xl,yl,x3,y3);
if(k012*k312>0
&& k023*k!23>0 SS k013*k213>0)
{
puts(" ");
getch();
exit(0);
} if(k012*k312<0
|| k023*k123<0 || k013*k213<0)
{
puts("
"); getch(); exit(O);
}
puts("
"); getch();
}
/*--------------------------------------*/
int r(float u,float v,float ul,float vl, float u2,float v2)
/*
(U,V) ,
(U1,V1) (U2,V2) */
{
float s=(u-ul)*(v2-vl)-(v-vl)*(u2-ul);
if(s>0) return
1;
if(s<0) return
-1;
return 0;
}
2_27.pas
program triangle;
(
}
var
Xd,y0,xl,yl,x2,y2,x3,y3:real;
k012, k312,k023,k!23,k013,k213:integer;
function r(u, v,ul, vl,u2, v2:real) :integer;
{
(U,V) ,
(U1,V1) (U2,V2) }
var
s:real;
begin
s: = (u-ul) * (v2-vl)- (v-vl) * (u2-ul) ;
r:=0;
if s>0 then r:=l;
if s<0 then r:=-l;
end;
begin
writeln(' ');' readln(xl,yl,2,2,,);
writeln(' ');
readln(x,);
k012:=r(x0,y0,xl,yl,x2,y2);
k312:=r(x3,y3,xl,yl,x2,y2);
k023:=r(0,0,2,2,,);
k123:=r(xl,yl,x2,y2,x3,y3);
k013:=r(x0,y0,xl,yl,x3,y3);
k213:=r(2,2,!,!,,);
if (k012*k312>0)
and (k023*k!23>0) and (k013*k213>0) then begin
write(' ');
halt;
end;
if (k012*k312<0)
or (k023*k!23<0) or (k013*k213<0) then begin
write ('
'),' halt; end;
write (' ' ) ;
readln;
end.
2.28.
, .
50 100 . .
1 9 (
1 ). , .
1 ()
N+1, .
.
> N+1, Ml = k* (N+1),
. . N+I. , . .
0. ,
: q,
N+1-q. N+1 .
, ,
1 , , .
2_28.bas
R
DEFINT A-Z
ml:
CLS
RANDOMIZE 32767
N = INT(RND
* 25) + 26
PRINT " - "; N; " 1 5"
m2:
PRINT " . ? - "
m4:
a$ = INKEY$:
IF a$ = "" THEN GOTO m4
k = ASC(a$)
- 48
IF 1 > k
OR k > 5 THEN PRINT " !": GOTO m2
N = N - k
PRINT "
"; N
IF N = THEN
PRINT "! !": GOTO ex
IF (N MOD 6)
= 0 THEN k = 1 ELSE k = N MOD 6
N = N - k
PRINT "
"; k; " "; N
IF N = 0 THEN
PRINT "
, !": GOTO ex
ELSE
GOTO m2
END IF ex: .,
PRINT " ? - (y/n) : "
m3:
a$ = INKEY$:
IF a$ = "" THEN GOTO m3
IF a$ = "y"
THEN GOTO ml
END
2_28.
//
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main()
{ int N,k,j; ml:
clrscr();
randomize();
N=random(25)+26;
printf("Ha - %d. 1 5.\n",N);
m2:
printf("\n
. ? - ");
k=getche()-48;
if(l>k ||
k>5) {printf("\n !"); goto m2;}
N=N-k;
printf("\n
%d",N);
if(N==0){printf("\n ! !");
goto ex;}
k=(N%6=0)?l:N%6;
printf ("\n
%d %d",k,N);
if(N==0){printf("\n K , !");
goto ex;
}
goto m2;
ex:
printf(" ? - (y/n) : ");
if(getch()=='y')
goto ml; )
2_28.pas
{ }
program game_mun;
uses Crt;
var
N,k,j:integer;
label
ml,m2,ex;
begin ml:
clrscr;
randomize;
N:=random(25)+26;
writeln('Ha - ',N,'. 1 5.');
m2:
writeln('Bain
. ? - ');
k:=Ord(ReadKey)-48;
if(l>k) or
(k>5) then
begin
writeln('TaK
!1); goto m2; end;
N:=N-k;
writeln('
',N);
if N=0 then
begin writeln('!
!'}; goto ex; end;
if (N mod 6)=0
then k:=l else k:=N mod 6;
N:=N-k;
writeln('
',k,' ',N);
if N=0 then
begin writeln('
, !'); goto ex; end;
goto m2; ex:
writeln('
? - (y/n) : ');
if ReadKey ='y'
then goto ml; end.
2.292.31.
, .
" " (Ulam S. .).
,
. , ,
,
.
, ,
(. 2.1).
.
2.1.
-.
,
. ,
, (x=x+1) (=+1),
(x=x-1) (y=y-l),
, . .
N
.
.
,
. , ,
(-,),
(2*n)2.
, (n,-n+l),
(2*n-1)2.
N q, ,
"" N. q -- ,
qz-N
.
(-q,q) . q ,
, N, , .
(q, -q+1).
(,) .
(-q, q) (q,-q+i)
. ,
.
, = .
, , > .
(,) ,
, ,
.
:
:
1 : > 0,
> 0
2 : < 0,
> 0, > ||
3 : < 0,
> 0, < ||
4 : < 0,
< 0
,
(0,0) N =(2*0)2.
, ,
(, ).
,
.
, b, , d.
.
,
coord_to_n.
2_29.bas
DECiARF, FUNCTION
CoordToN! (&, Y&)
REM
INPUT "
: ", &, Y&
& = CoordToN(X&,
Y&)
PRINT "
= "; &
END
FUNCTION CoordToN
(XS, Y&)
IF X& <= Y& THEN '
IF & >= 0 AND Y& > 0 THEN GOTO m12 ' 1
IF & <
0 AND Y& >= 0 AND Y& >= ABS(X&) THEN ' 2
' 1 2
m12:
0 = -Y&:
0 = Y&: N& = (2 * 0)^2'
CoordToN = N& + 0 - &: EXIT FUNCTION
ELSE
' 3 4
0 = &: 0 = -XS: N& = (2 * 0)^2 CoordToN = N& + 0 - Y&:
EXIT FUNCTION
END IF
END IF '
IF X& <=
0 AND Y& < 0 THEN GOTO mab'
IF x& >= 0 AND'YS < 0 AND ABS<Y&) >= & THEN ' 2, 3
mab: 0 = -Y&
+1: Y0 = -Y&: N& = (2 * - 1) ^2
CoordToN = N& - + &: EXIT
FUNCTION ELSE
'
, d
0 = &:
0 = -& + 1: N& = (2 * 0 - 1) ^ 2
CoordToN = N& + YS - 0
END IF
END FUNCTION
2_29.
#include <stdio.h>
#include <conio.h>
#include <math.h>
long sqr(long x);
long coord_to_n(long
x,long y);
void main()
{ long x,y,M;
printf("\n : ");
scanf("%ld
%ld",Sx,&y);
M=coord to n(x,y);
.
printf("\nEro = %ld",M);
getch(); }
long coord_to_n(long
x,long y) { long N,x0,y0;
if(x<=y) //
{
if(>=0 && >0) goto m12; // 1
if(x<0 && y>=0 && y>=labs(x)) // 2 {// 1 2
ml2:
0=-;
0=;
N=sqr(2*);
//
return N+x0-x;
} // 3 4
0=; 0=-;
N=sqr(2*0); return N+y0-y; }
//
if(<=0 && <0) goto mab; // 2
if(x>=0 && <0 && labs(y)>=x) // 3
{// 1, 2
mab:
x0=-y+l;
y0=-y;
N=sqr(2*0-1);
return N-x0+x;
} //
3, 4
0=;
0=-+1;
N=sqr(2*x0-l);
return N+y-y0;
long sqr(long
x)
{ return x*x; }
2_29.pas
program CoordToN;
var
M,x,y:longint;
function coord_to_n(x,y:longint}:longint;
var
x0,y0,N:longint;
label ml2,mab;
begin
if x<=y then
{ }
begin if (x>=0) and(y>0) then goto m!2; { 1 }
if (x<0) and (y>=0) and (y>=abs(x)) then { 2 }
begin { 1 2 }
m12: x0:=-y; y0:=y; N:=sqr(2*x0); { }
coord__to_n:
= N+xO-x; exit;
end;
{ 4 }
x0:=x; y0:=-x;
N:=sqr(2*x0);
coord_to_n:=N+yO-y; exit;
end;
{ }
if(x<=0)
and (y<0) then goto mab; { }
if(x>=0) and (y<0) and (abs(y)>=x) then { b }
begin { a, b }
mab: x0:=-y+l; y0:=-y; N:=sqr(2*x0-l);
coord_to_n:=
N-xO+x; exit;
end;
{ , d }
x0:=x; y0:=-x+l;
N:=sqr(2*xO-l);
coord_to_n:= N+y-y0;
end;
begin
writeln('
: ');
readln(x,);
.=toord_to_a(x,y);
writeln ('
= \);
readln;
end.
n_to_coord coord_to_N
NI N2,
N . .
2_30.bas
DECLARE SUB
NtoCoord (N&, X&, YS)
REM
INPUT "
: ", N&
NtoCoord N&,
xl&, yl&
INPUT "
: ", N&
NtoCoord N&,
2&, 2&
dx = xl&
- x2&: dy = yl& - 2&
PRINT "
= ", SQR(dx * dx + dy * dy)
END
SUB NtoCoord
(N&, X&, Y&)
DIM k AS LONG, j AS LONG, d AS LONG
j = INT(SQR(N&) + .5)
d = N& - j * j
k = j \ 2
PRINT "j=";
j, "d="; d, "k="; k
IF (j MOD 2) THEN
IF d > 0 THEN
X& = k +
1: Y& = -k + d
ELSE
X& = k +
1 + d: Y& = -k
END IF
ELSE
IF d > 0
THEN
X& = -k:
Y& = k - d
ELSE
X& = -k
- d: Y& = k
END IF
END IF
END SUB
2_30.
//
#include <stdio.h>
#include <conio.h>
#include <math.h>
void n_to_coord(long
N, long *x, long *y) ;
void main()
{ long N,xl,yl,x2,y2;
double dx,dy;
printf("\n
: ");
scanf("%ld",&N);
n_to_coord(N,Sxl, &yl);
printf("\n
: ");
scanf("%ld",&N);
n_to_coord(N,&x2,&y2) ;
dx=xl-x2; dy=yl-y2;
printf("
= %f",sqrt(dx*dx + dy*dy));
getch();
}
void n_to_coord(long
N,long *x,long *y)
( long k,j,d;
j=floor(sqrt(N)+0.5);
d=N-j*j; k=j / 2;
if (j % 2)
{ if (d>0)
{ *x=k+l; *y=-k+d; }
else { *x=k+l+d;*y=-k;
}
}
else
{ if (d>0)
{ *x=-k; *y=k-d; }
else { *x=-k-d;
*y=k; )
}
}
2_30.pas
program spiral;
var
xl, yl, x2,y2,N:longint;
dx, dy: double;
procedure n_to_coord(N:longint;var x,y:longint);
var
k,j,d:longint;
begin
}
j:=trunc(sqrt(NJ+0.5) ;
d:=N-sqr(j);
k:=j div 2; if
odd(j) then begin
if d>0 then
begin x:=k+l; y:=-k+d;end
else begin x:=k+l+d; y:=-k; end; end
else if d>0
then begin x:=-k; y:=k-d; end else begin x:=-k-d; y:=k; end; end; begin
writeln('
'); readln(N);
n_to_coord(N,xl,yl);
writeln(' '); readln(N);
n_to_coord(N,x2,
2); dx:=xl-x2; dy:=yl-y2;
writeln('
= ',sqrt(dx*dx + dy*dy)); readln; end.
, ,
(. 2.2).
.
2.2.
-
.
0, 1, 2, ... ""
, . ,
k k+1 ,
:
X + = b(k)
.
,
, .
,
. . 2.1.
2.1. ,
|
|
|||||
nDiag |
nBeg |
nEnd |
(g, g) |
(xEnd, yEnd) |
||
0 |
0 |
0 |
(0,0) |
(0,0) |
||
1 |
1 |
2 |
(1,0) |
(0,1) |
||
2 |
3 |
5 |
(0,2) |
(2,0) |
||
3 |
6 |
9 |
(3,0) |
(0,3) |
||
4 |
10 |
14 |
(0,4) |
(4,0) |
||
5 |
15 |
20 |
(5,0) |
(0,5) |
||
6 |
21 |
27 |
(0,6) |
(6,0) |
||
7 |
28 |
35 |
(7,0) |
(0,7) |
||
8 |
36 |
44 |
(0,8) |
(8,0) |
||
9 |
45 |
54 |
(9,0) |
(0,9) |
||
10 |
55 |
65 |
(0,10) |
(10,0) |
||
. 2.1 :
nEnd = nBeg
+ nDiag nBeg(nDiag-t-l)
= nEnd(nDiag) + 1
nDiag
-- , (0, nDiag)
, .
(noiag, 0) , .
, .
.
dx
dy ,
( 0) (
) ( ). ,
, nextpoint.
,
.
2_31.bas
DECLARE SUB
NEXTPOINT (X&, Y&)
DIM nDiag AS
LONG '
DIM xBeg AS
LONG, yBeg AS LONG '
DIM nPoints
AS LONG '
DIM nBeg AS
LONG '
DIM dx(8), dy(S)
DATA -1,-1,-1,0,1,1/ 1/ 0
FOR J = 0 TO 7: READ dx(J): NEXT J
DATA -1, 0, 1,1,1,0,-1,-1
FOR J = 0 TO 7: READ dy(J): NEXT J
ml:
CLS
INPUT " : ", N
nBeg = 0: = N: = 0: g = 0
FOR k = 0 200000000
= - k
IF < 0 THEN EXIT FOR
nBeg = nBeg +
k NEXT k
nDiag = k -
1: nPoints = k
IF (nDiag MOD 2) = 0 THEN '
yBeg = nDiag
xN = xBeg + (N - nBeg) yN = yBeg - (N - nBeg)
ELSE '
xBeg = nDiag
xN = xBeg -
(N - nBeg)
yN = yBeg + (N - nBeg) END IF
PRINT " : "
FOR k = 0
7
X& = xN + dx(k)
Y& = yN + dy(k)
NEXTPOINT X&, Y& NEXT k PRINT
PRINT " - (y/n) : ";
m2:
A$ = INKEY$: IF A$ = "" THEN GOTO m2
IF A$ = "y"
THEN GOTO m1 END
SUB NEXTPOINT (X&, Y&)
SHARED nDiag AS LONG, xBeg AS LONG, yBeg AS LONG, nPoints AS LONG
DIM N AS LONG, J AS INTEGER
IF X& < 0 OR Y& < 0 THEN EXIT SUB
nBeg = 0: nDiag = X& + Y&: xBeg = yBeg = 0
nPoints = nDiag + 1
FOR J = 0 TO nPoints - 1: nBeg = nBeg + J: NEXT J
IF (nDiag MOD 2) = 0 THEN
yBeg = nDiag: N = nBeg + yBeg - Y&
ELSE
xBeg = nDiag: N = nBeg + xBeg - X&
END IF
PRINT N; ",";
END SUB
2_31.
#include <stdio.h>
#include <conio.h>
void nextpoint(long x,long y) ;
int dx[8]={-l,-l,-l,0,l,l, 1, 0};
int dy[8]={-l, 0, 1,1,1,0,-!,-!};
long nDiag, //
xBeg,yBeg, // nPoints, //
nBeg; //
void main() { long N,M,
xN,yN, // x,y,k; clrscr (); m:
printf("\n\n : "} ; scanf("%ld",&N);
// nBeg=0; M=N;
==0;
for(k=0;;k++)
{ M=M-k;
if(M<0) break; nBeg=nBeg+k; }
nDiag=k-l; nPoints=k;
if((nDiag % 2)=0) // { yBeg= nDiag; xN=xBeg+(N-nBeg);
yN=yBeg-(N-nBeg);
)
else //
{ xBeg=nDiag;
xN=xBeg-(N-nBeg); yN=yBeg+(N-nBeg); }
printf(" :\n" ); for(k=0;k<8;k++) { x = xN +
dx[k]; = yN + dy [k] ; nextpoint(x,y); }
printf(" - (y/n) : ");
if(getch(}==''} goto m; }
void nextpoint(long x,long y) { long N;
if(x<0||y<0) return;
nBeg=0;
nDiag=x+y;
xBeg=yBeg=0;
nPoints=nDiag+l;
for fint j=0;j<nPoints;j++) nBeg+=j;
if((nDiag % 2)==0) { yBeg=nDiag; N=nBeg+yBeg-y;}
else { xBeg=nDiag; N=nBeg+xBeg-x; }
printf("%ld ",N);
}
2_31.pas
program spirall;
uses Crt;
label ml;
var
nDiag, { }
xBeg,yBeg, ( }
nPoints, { }
nBeg, { }
N,M,
xN,yN, { }
,,k: longint; const
dx : array [0..7] of integer =(-1,-1,-1,0,1,1, 1, 0);
dy : array [0..7] of integer =(-1, 0, 1,1,1,0,-1,-1);
procedure nextpoint(x,y:longint);
var
N: longint ,-
j. integer/" begin
if (x>=0)and(y>=0) then
bey in nBeg:=0; nDiag;=x+y; xseg:=0;
yBeg:=0;
nPoints:=nDiag+l;
for j:=0 to nPoints-1 do nBeg:=nBeg+j;
if ((nDiag mod 2)=0) then begin
yBeg:=nDiag; N:=nBeg+yBeg-y; end
else begin
xBeg:=nDiag; N:=nBeg+xBeg-x; end;
write(N,', ') ; end; end; begin
clrscr; ml:
write(' : ');
readln(N);
{ }
nBeg:=0;
M:=N;
xBeg:=0;
yBeg:=0;
k:=0;
repeat
M:=M-k;
if M<0 then break; nBeg:---nBeg+k;
k:=k+l;
until k<0; nDiag:=k-l;
nPoints:=k;
if(nDiag mod 2)=0 then { } begin
yBeg:=nDiag;
xN:=xBeg+(N-nBeg) ;
yN:=yBeg-(N-nBeg) ; end
else { }
begin
xBeg:=nDiag; xN:=xBeg-(N-nBeg) ;
yN:=yBeg+(N-nBeg) ; end;
writeln(' : ');
for
k:=0 to 7 do begin
x := xN + dx[k]; := yN + dy[k]; nextpoint(x,y);
end;
writeln;
writeln(' - (y/n) : ');
if ReadKey='y' then goto ml;
end.
10.11.2021 - 12:37: - Personalias -> WHO IS WHO - - _. 10.11.2021 - 12:36: - Conscience -> . ? - _. 10.11.2021 - 12:36: , , - Upbringing, Inlightening, Education -> ... - _. 10.11.2021 - 12:35: - Ecology -> - _. 10.11.2021 - 12:34: , - War, Politics and Science -> - _. 10.11.2021 - 12:34: , - War, Politics and Science -> . - _. 10.11.2021 - 12:34: , , - Upbringing, Inlightening, Education -> , - _. 10.11.2021 - 09:18: - New Technologies -> , 5G- - _. 10.11.2021 - 09:18: - Ecology -> - _. 10.11.2021 - 09:16: - Ecology -> - _. 10.11.2021 - 09:15: , , - Upbringing, Inlightening, Education -> - _. 10.11.2021 - 09:13: , , - Upbringing, Inlightening, Education -> - _. |