Đến nội dung

Hình ảnh

Một số bài pascal quen thuộc!


  • Please log in to reply
Chủ đề này có 7 trả lời

#1
PlanBbyFESN

PlanBbyFESN

    Thiếu úy

  • Điều hành viên OLYMPIC
  • 637 Bài viết

Bài 1: Hai số được gọi là anh em nếu tổng các ước của chúng ngoài 1 và chính nó bằng nhau:

   

      VD:      6: 2 3 >>> 5

                  25: 5 >>> 5

                  nên 6 và 25 là hai số anh em

 

Bài 2: Tìm số hoàn hảo: có các ước số trừ nó bằng chính nó

 

VD: 6: 1,2,3 >>> 1+2+3=6: 6 là số hoàn hảo.

 

Bài 3: 1)  Tìm số nguyên tố bé hơn hoặc bằng số n nhập trước.

          2)  Kiểm tra 1 số là số nguyên tố hay không

 

Bài 4: Cho một xâu:

          a) Đếm xâu

          b) Đảo xâu

          c) Đảo từ

Bài 5*: Cho một xâu kí tự, viết chương trình để lấy một đoạn xâu con của xâu mẹ với vị trí bắt đầu và vị trí cuối nhập trước!

 

p/s: tất cả đều phải sử dụng tệp!


:huh:


#2
Zjkar

Zjkar

    Hạ sĩ

  • Thành viên
  • 82 Bài viết

Bài 1: Hai số được gọi là anh em nếu tổng các ước của chúng ngoài 1 và chính nó bằng nhau:

   

      VD:      6: 2 3 >>> 5

                  25: 5 >>> 5

                  nên 6 và 25 là hai số anh em

 

Bài 2: Tìm số hoàn hảo: có các ước số trừ nó bằng chính nó

 

VD: 6: 1,2,3 >>> 1+2+3=6: 6 là số hoàn hảo.

 

Bài 3: 1)  Tìm số nguyên tố bé hơn hoặc bằng số n nhập trước.

          2)  Kiểm tra 1 số là số nguyên tố hay không

 

Bài 4: Cho một xâu:

          a) Đếm xâu

          b) Đảo xâu

          c) Đảo từ

Bài 5*: Cho một xâu kí tự, viết chương trình để lấy một đoạn xâu con của xâu mẹ với vị trí bắt đầu và vị trí cuối nhập trước!

 

p/s: tất cả đều phải sử dụng tệp!

Bạn có thể nói rõ hơn đề và ví dụ được không ?

Nhất là đề 1 và 4c.

Thanks.



#3
PlanBbyFESN

PlanBbyFESN

    Thiếu úy

  • Điều hành viên OLYMPIC
  • 637 Bài viết

Bạn có thể nói rõ hơn đề và ví dụ được không ?

Nhất là đề 1 và 4c.

Thanks.

 

  • Hai số anh em nhé:

 

Ví dụ:        6 có 2 ước trừ 1 và chính nó (6) là 2 và 3 có tổng là 5

                 25 có 1 ước trừ 1 và chính nó (25) là 5 

                  nên 6 và 25 là hai số anh em!

          

  • Đảo từ trong xâu ví dụ như:

 

Xâu nhập:  dien dan toan hoc 

Xau ra     :  hoc toan dan dien


:huh:


#4
Zjkar

Zjkar

    Hạ sĩ

  • Thành viên
  • 82 Bài viết

A

 

 

  • Hai số anh em nhé:

 

Ví dụ:        6 có 2 ước trừ 1 và chính nó (6) là 2 và 3 có tổng là 5

                 25 có 1 ước trừ 1 và chính nó (25) là 5 

                  nên 6 và 25 là hai số anh em!

          

  • Đảo từ trong xâu ví dụ như:

 

Xâu nhập:  dien dan toan hoc 

Xau ra     :  hoc toan dan dien

À mình hiểu rồi,bạn xem code của mình đi:



#5
Zjkar

Zjkar

    Hạ sĩ

  • Thành viên
  • 82 Bài viết


Bài 1: Hai số được gọi là anh em nếu tổng các ước của chúng ngoài 1 và chính nó bằng nhau:

   

      VD:      6: 2 3 >>> 5

                  25: 5 >>> 5

                  nên 6 và 25 là hai số anh em

 

Bài 2: Tìm số hoàn hảo: có các ước số trừ nó bằng chính nó

 

VD: 6: 1,2,3 >>> 1+2+3=6: 6 là số hoàn hảo.

 

Bài 3: 1)  Tìm số nguyên tố bé hơn hoặc bằng số n nhập trước.

          2)  Kiểm tra 1 số là số nguyên tố hay không

 

Bài 4: Cho một xâu:

          a) Đếm xâu

          b) Đảo xâu

          c) Đảo từ

Bài 5*: Cho một xâu kí tự, viết chương trình để lấy một đoạn xâu con của xâu mẹ với vị trí bắt đầu và vị trí cuối nhập trước!

 

p/s: tất cả đều phải sử dụng tệp!

*Bai 1:

program bb1;

uses crt;

var f:text;

i,n,j,k,l,p:longint;

function kt(n:longint):longint;

var i,j,k:longint;

begin

k:=0;

for i:=2 to n-1 do

if n mod i=0 then k:=k+i;

kt:=k;

end;

begin

clrscr;

assign(f,'b1.dat');

rewrite(f);

write('Nhap so thu 1:');readln(n);

writeln('Nhap so thu 2:');readln(p);

if kt(n)=kt(p) then writeln(f,n, va ',p,' la 2 so anh em') else writeln(f,n,' va ',p,' khong la 2 so anh em');

end;

reset(f);

while not eof(f) do

begin

readln(f,n);

writeln(f);

end;

close(f);

readln

end.

*Bai 2:

program bb2;

uses crt;

var f:text;

n:longint;

function hh(n:longint):boolean;

var i,,j:longint;

kt:boolean;

begin

kt:=false;

j:=0;

for i:=1 to n-1 do

if n mod i=0 then j:=j+i;

if j=n then kt:=true;

hh:=kt;

end;

begin

clrscr;

assign(f,'b2.dat');

rewrite(f);

write('Nhap so :');readln(n);

for i:=1 to n do

if hh(i) then write(f,i):

write('Cac so hoan hao la:');

reset(f);

while not eof(f) do

begin

read(f,i);

write(i,'  ');

end;

close(f);

readln

end.

*Bai 3:

program bb3;

uses crt;

var f:text;

i,n,j,k,l,p:longint;

function nt(n:longint):boolean;

var i,s:longint;

kt:boolean;

begin

s:=0;

kt:=false;

for i:=1 to n do

if n mod i=0 then s:=s+1;

if s=2 then kt:=true;

nt:=kt;

end;

begin

clrscr;

assign(f,'b3.dat');

rewrite(f);

write('Nhap n:');readln(n);

for i:=1 to n do

if nt(i) then write(f,i);

writeln('Cac so nguyen to be hon hoac bang ',n,' la:');

reset(f);

while not eof(f) do

begin

read(f,i);

write(i,'   ');

end;

writeln;

write('Nhap so can xac dinh:');readln(p);

rewrite(f);

if nt(p) then writeln(f,p,' la so nguyen to') else writeln(f,p,' khong la so nguyen to');

reset(f);

while not eof(f) do

begin

readln(f,p);

writeln(f);

end;

close(f);

readln

end.

*Bai 4:

program bb4;

uses crt;

var f:text;

i,n,j,k,l,p:longint;

s,s1,s2,s3:string;

begin

clrscr;

assign(f,'b4.dat');

rewrite(f);

write('Nhap xau:');readln(s);

s1:=s;st:='';s3:='';s2:='';

writeln(f,'Xau co ',length(s),' ky tu');

for i:=length(s) downto 1 do

st:=st+s[i];

writeln(f,'Xau dao:',st);

for i:=length(s1) downto 1 do

begin

if s1[i]<>' ' then s3:=s3+s1[i];

if (s1[i+1]<>' ')and(s1[i]=' ')or(i=1) then

begin

for j:=length(s3) downto 1 do

s2:=s2+s3[j];

s2:=s2+' ';

s3:='';

end;

end;

writeln(f,'Xau dao theo tu:',s2);

reset(f);

while not eof(f) do

begin

readln(f,s);

writeln(f);

end;

close(f);

readln

end.

*Bai 5:

program bb5;

uses crt;

var f:text;

i,,j,k:longint;

s,s1:string;

begin

clrscr;

write('Nhap xau me:');readln(s);

repeat

write('Nhap vi tri dau:');readln(k);

if (k>=1)and(k<=length(s) then break;

writeln('Nhap 1<=1<=length(s)');

until false;

repeat

write('Nhap vi tri cuoi:');readln(j);

if (j>=i)and(j<=length(s)) then break;

writeln('Nhap i<=j<=length(s)');

until false;

s1:='';

for i:=k to j do

s1:=s1+s[i];

assign(f,'b5.dat');

rewrite(f);

write(f,'Xau con:',s1);

reset(f);

while not eof(f) do

begin

read(f,s1);

write(s1);

end;

close(f);

readln

end.

--------- Phù phù....cuối cùng cũng post xong !!! ~O)

P/s:"Phù phù" không phải ý là mệt vì bài khó mà là bị cắt giở do mất điện @@ << 3 lần >> :mellow:  :huh:

==> Vô cùng ức chế :angry:  :angry: .... mà bài làm ok rồi đó. :closedeyes:

                             Chúc may mắn ! ;)  ;)


Bài viết đã được chỉnh sửa nội dung bởi Zjkar: 20-03-2016 - 14:23


#6
Master Kaiser

Master Kaiser

    Thượng sĩ

  • Thành viên
  • 265 Bài viết
" Trên hai đuờng thẳng song song L1 và L2, Người ta đánh dấu trên mỗi đường N 
Điểm, Các điểm  trên đường  thẳng L1 Được đánh số từ 1 đến N, từ  trái qua phải,  
còn các điểm  trên đường  thẳng L2 được đánh số bởi P[1],P[2],...P[N] cũng từ  trái 
qua phải, trong đó P[1],P[2],..P[N] là một hoán vị của các số 1,2,...N  
Ta gọi các số gán cho các điểm là số hiệu của chúng. Cho phép nối hai điểm trên 2 
đường thẳng có cùng số hiệu. 
Yêu Cầu  : Tìm cách nối được nhiều cặp điểm nhất với điều kiện các đoạn nối không 
được cắt nhau.  
Dữ Liệu : Vào từ File BaiToan2.Inp: 
•  Dòng đầu tiên chứa số nguyên dương N(N<=1000) 
•  Dòng thứ hai chứa các số P[1],P[2],....P[N] 
Kết Quả Ghi Ra File : BaiToan2.Out  
•  Dòng Đầu tiên chứa K là số lượng đoạn nối tìm được 
•  Dòng tiếp theo chứa K số hiệu của các đầu mút của các đoạn nối được ghi theo thứ 
tự tăng dần.  
Ví Dụ : 
      WIRES.INP          WIRES.OUT 
9   5 
2 5 3 8 7 4 6 9 1   2 3 4 6 9

  • PUA yêu thích

               Master Kaiser

                                   Liên hệ facebook : https://www.facebook...uyenhoanganh238


#7
hoicmvsao

hoicmvsao

    Thượng sĩ

  • Thành viên
  • 299 Bài viết


 

" Trên hai đuờng thẳng song song L1 và L2, Người ta đánh dấu trên mỗi đường N 
Điểm, Các điểm  trên đường  thẳng L1 Được đánh số từ 1 đến N, từ  trái qua phải,  
còn các điểm  trên đường  thẳng L2 được đánh số bởi P[1],P[2],...P[N] cũng từ  trái 
qua phải, trong đó P[1],P[2],..P[N] là một hoán vị của các số 1,2,...N  
Ta gọi các số gán cho các điểm là số hiệu của chúng. Cho phép nối hai điểm trên 2 
đường thẳng có cùng số hiệu. 
Yêu Cầu  : Tìm cách nối được nhiều cặp điểm nhất với điều kiện các đoạn nối không 
được cắt nhau.  
Dữ Liệu : Vào từ File BaiToan2.Inp: 
•  Dòng đầu tiên chứa số nguyên dương N(N<=1000) 
•  Dòng thứ hai chứa các số P[1],P[2],....P[N] 
Kết Quả Ghi Ra File : BaiToan2.Out  
•  Dòng Đầu tiên chứa K là số lượng đoạn nối tìm được 
•  Dòng tiếp theo chứa K số hiệu của các đầu mút của các đoạn nối được ghi theo thứ 
tự tăng dần.  
Ví Dụ : 
      WIRES.INP          WIRES.OUT 
9   5 
2 5 3 8 7 4 6 9 1   2 3 4 6 9

 

#include <bits/stdc++.h>
#define F(i,a,b)    for (int i=a;i<=b;i++)
#define D(i,a,b)    for (int i=a;i>=b;i--)
using namespace std;
int n,p[1001],kq[1001]={0},trace[1001]={0};
void open()
{
    freopen("Wires.inp","r",stdin);
    freopen("Wires.out","w",stdout);
}
void read()
{
    cin>>n;
    F(i,1,n) cin>>p[i];
    p[0]=0;
    p[n+1]=n+1;
}
void qhd()
{       int c[1001];
        F(i,1,n+1)
            F(j,0,i-1) if (p[j]<p[i]) if (kq[i]<kq[j]+1){kq[i]=kq[j]+1; trace[i]=j;};
 
        int j=trace[n+1];
        int k=kq[n+1]-1;
        cout<<k<<endl;
        int l=k;
        while(j>0)
        {
            c[k]=p[j];
            j=trace[j];
            k--;
        }
        F(i,1,l) cout<<c[i]<<" ";
}
int main()
{   open();
    read();
    qhd();
    return 0;
}
// CODE C++ BÀI WIRES


#8
Master Kaiser

Master Kaiser

    Thượng sĩ

  • Thành viên
  • 265 Bài viết


 

#include <bits/stdc++.h>
#define F(i,a,b)    for (int i=a;i<=b;i++)
#define D(i,a,b)    for (int i=a;i>=b;i--)
using namespace std;
int n,p[1001],kq[1001]={0},trace[1001]={0};
void open()
{
    freopen("Wires.inp","r",stdin);
    freopen("Wires.out","w",stdout);
}
void read()
{
    cin>>n;
    F(i,1,n) cin>>p[i];
    p[0]=0;
    p[n+1]=n+1;
}
void qhd()
{       int c[1001];
        F(i,1,n+1)
            F(j,0,i-1) if (p[j]<p[i]) if (kq[i]<kq[j]+1){kq[i]=kq[j]+1; trace[i]=j;};
 
        int j=trace[n+1];
        int k=kq[n+1]-1;
        cout<<k<<endl;
        int l=k;
        while(j>0)
        {
            c[k]=p[j];
            j=trace[j];
            k--;
        }
        F(i,1,l) cout<<c[i]<<" ";
}
int main()
{   open();
    read();
    qhd();
    return 0;
}
// CODE C++ BÀI WIRES

 

ruj bạn à :3


               Master Kaiser

                                   Liên hệ facebook : https://www.facebook...uyenhoanganh238





1 người đang xem chủ đề

0 thành viên, 1 khách, 0 thành viên ẩn danh