Wednesday, August 27, 2014

Số nguyên tố mạnh và số Amstrong

Cho một tệp văn bản input.txt chứa các phần tử nguyên không âm, các phần tử cách nhau ít nhất một dấu cách trống hoặc ít nhất một dấu xuống dòng. Viết chương trình kiểm tra các số nguyên đọc ra từ tệp input.txt có phải là số nguyên tố mạnh và số Amstrong hay không?. Đưa các số nguyên tố mạnh vào tệp văn bản output1.txt và các số Amstrong vào tệp văn bản output2.txt.
Số nguyên tố mạnh và số Amstrong       
-         Số nguyên tố mạnh là số nguyên tố lớn hơn trung bình cộng của hai số nguyên tố liền trước và liền sau nó.
Ví dụ: 11 là số nguyên tố mạnh vì 11>(7+13)/2
         5 không phải là số nguyên tố mạnh vì 5=(3+7)/2
-         Số nguyên dương có n chữ số gọi là số Amstrong nếu số đó bằng tổng các lũy thừa bậc n của các chữ số của số đó.
Ví dụ: 153 là số Amstrong vì 153 = 13+ 23 + 33



code bài 1: thay đổi mảng a,b bôi vàng để thêm phần tử xét.

#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <math.h>
using namespace std;
void docdl(unsigned long a[],unsigned long *n)
{
       FILE *u;
       u=fopen("c:\\input.txt","rt");
       while (!feof(u))
       {
              fscanf(u,"%lu",&a[*n]);
              *n=*n+1;
       }
       fclose(u);
}
int amstrong(unsigned long n)
{
       if (n==0) return 0;
       int x= log10((float)n) + 1;
       unsigned longy=n,z=0,t;
       while (y>0)
       {
              t=y%10;
              z+=pow((float)t,x);
              y=y/10;
       }
       if (z==n) return 1;
       return 0;
}
int ktnto(unsigned long x)
{
       if (x==0||x==1) return0;
       unsigned long i;
       for ( i=2;(i*i)<=x; i++)
              if (x%i==0) return 0;
       return 1;
}
unsigned long max(unsigned long a[],unsigned long n)
{
       unsigned longmax1=0,i;
       for (i=0;i<n;i++) if(a[i]>max1) max1=a[i];
       return max1;
}
void sinhnto(unsigned long a[],unsigned long b[],unsigned long n)
{
       unsigned longi,j=0,t=max(a,n);
       for (i=2;i<=t;i++)
       {
              if (ktnto(i))
              {
                     b[j]=i;
                     j++;
              }
       }
       i++;
       while (ktnto(i)==0) i++;
       b[j]=i;
}
int ktntomanh(unsigned long x,unsigned long b[])
{
       unsigned long i=0;
       if (x<=2) return0;
       while (x>b[i])       i++;
       if (x!=b[i]) return0;
       if ((b[i-1]+b[i+1])<(2*b[i])) return 1;
       return 0;
}
int main()
{
       unsigned longa[10000],b[10000],n=0,i;
       FILE *u,*v;
       u=fopen("c:\\output1.txt","wt");
       v=fopen("c:\\output2.txt","wt");
       docdl(a,&n);
       sinhnto(a,b,n);
       for (i=0;i<n;i++)
       {
              if (ktntomanh(a[i],b)) fprintf(u,"%lu  ",a[i]);
              if (amstrong(a[i])) fprintf(v,"%lu  ",a[i]);
       }
       fclose(v);
       fclose(u);
       printf("\n HOAN TAT 1");
       getch();
}


       

Cho tệp văn bản input.txt dòng đầu chứa 2 số nguyên n và m, tiếp theo là một ma trận các số thực n x m. Các số cách nhau ít nhất một dấu cách trống hoặc ít nhất một dấu xuống dòng. Xây dựng mảng một chiều b gồm các số nguyên tố có mặt trong mảng hai chiều a. Xây dựng mảng một chiều b gồm các số hoàn hảo có mặt trong mảng hai chiều a.

 Cho tệp văn bản input.txt dòng đầu chứa 2 số nguyên n và m, tiếp theo là một ma trận các số thực n x m. Các số cách nhau ít nhất một dấu cách trống hoặc ít nhất một dấu xuống dòng. Xây dựng mảng một chiều b gồm các số nguyên tố có mặt trong mảng hai chiều a. Xây dựng mảng một chiều b gồm các số hoàn hảo có mặt trong mảng hai chiều a.



#include <stdio.h>
#include <conio.h>
intktsnt(unsigned longn)
{
    unsigned long i;
       if (n==0 || n==1) return 0;
       for(i=2;i*i<=n;i++) if (n%i==0) return 0;
       return 1;    
}
intktsht(unsigned longn)
{
    unsigned long i,k=0;
       for(i=2;i<n;i++) if(n%i==0)
       {
              k+=i;
              if(k>n) return 0;
       }
       if (n==k) return 1; else return 0;
}
voiddocdl(float a[][50],int*n,int *m)
{
       int i,j;
       FILE *u;
       u=fopen("c:\\input.txt","rt");
       fscanf(u,"%d%d",&*n,&*m);
       for(i=0;i<*n;i++)
              for(j=0;j<*m;j++)
              fscanf(u,"%f",&a[i][j]);
       fclose(u);
}
voidxemmang1(unsigned longa[],unsigned longn)
{
       unsigned long i;
       printf("\n"); 
       for(i=0;i<n;i++)
              printf("  %lu  ",a[i]);
       printf("\n");
}

voidxemmang2(float a[][50],intn,int m)
{
    int i,j;
       printf("\n");
    for(i=0;i<n;i++)
    {
       for(j=0;j<m;j++)
       printf("%10.2f",a[i][j]);
       printf("\n");
    }
       printf("\n");
}
voidxuly(float a[][50],intn,int m,unsignedlong b[],unsignedlong *demnt,unsignedlong c[],unsignedlong *demht)
{
    int i,j;
    for(i=0;i<n;i++)
    {
       for(j=0;j<m;j++)
          if((a[i][j]/1.0)==((unsignedlong)a[i][j]/1)&&a[i][j]>0)
          {
                 if (ktsnt((unsignedlong)a[i][j]))
                 {
                        b[*demnt]=(unsignedlong)a[i][j];
                        *demnt = *demnt + 1;
                 }
                 if (ktsht((unsignedlong)a[i][j]))
                 {
                        b[*demht]=(unsignedlong)a[i][j];
                        *demht= *demht + 1;
                 }
          }
    }
}
voidmain()
{
       floata[50][50];  //mang luu du lieu vao
       unsigned long b[2500],demnt=0,// mang luu so nguyen to.
                        c[2500],demht=0;// mang luu so hoan thien.
       intm=0,n=0;
       docdl(a,&n,&m);
       xemmang2(a,n,m);
       xuly(a,n,m,b,&demnt,c,&demht);
       printf("\n Mang nguyen to dc tao la");
       xemmang1(b,demnt);
       printf("\n Mang so hoan thien dc tao la");
       xemmang1(c,demht);
       printf("\nHoan Tat ");
       getch();

}

Cho tệp văn bản input.txt dòng đầu chứa 2 số nguyên n và m, tiếp theo là một ma trận các số Nguyên n x m. Các số cách nhau ít nhất một dấu cách trống hoặc ít nhất một dấu xuống dòng. Xây dựng mảng một chiều b gồm các số nguyên tố có mặt trong mảng hai chiều a. Xây dựng mảng một chiều b gồm các số hoàn hảo có mặt trong mảng hai chiều a.

Cho tệp văn bản input.txt dòng đầu chứa 2 số nguyên n và m, tiếp theo là một ma trận các số Nguyên n x m. Các số cách nhau ít nhất một dấu cách trống hoặc ít nhất một dấu xuống dòng. Xây dựng mảng một chiều b gồm các số nguyên tố có mặt trong mảng hai chiều a. Xây dựng mảng một chiều b gồm các số hoàn hảo có mặt trong mảng hai chiều a.
code

#include <stdio.h>
#include <conio.h>
intktsnt(unsigned longn)
{
    unsigned long i;
       if (n==0 || n==1) return 0;
       for(i=2;i*i<=n;i++) if (n%i==0) return 0;
       return 1;    
}
intktsht(unsigned longn)
{
    unsigned long i,k=0;
       for(i=2;i<n;i++) if(n%i==0)
       {
              k+=i;
              if(k>n) return 0;
       }
       if (n==k) return 1; else return 0;
}
voiddocdl(unsigned longa[][50],int *n,int*m)
{
       int i,j;
       FILE *u;
       u=fopen("c:\\input.txt","rt");
       fscanf(u,"%d%d",&*n,&*m);
       for(i=0;i<*n;i++)
              for(j=0;j<*m;j++)
              fscanf(u,"%lu",&a[i][j]);
       fclose(u);
}
voidxemmang1(unsigned longa[],unsigned longn)
{
       unsigned long i;
       printf("\n"); 
       for(i=0;i<n;i++)
              printf("  %lu  ",a[i]);
       printf("\n");
}

voidxemmang2(unsigned longa[][50],int n,intm)
{
    int i,j;
       printf("\n");
    for(i=0;i<n;i++)
    {
       for(j=0;j<m;j++)
       printf("  %lu  ",a[i][j]);
       printf("\n");
    }
       printf("\n");
}
voidxuly(unsigned longa[][50],int n,intm,unsigned longb[],unsigned long*demnt,unsigned longc[],unsigned long*demht)
{
    int i,j;
    for(i=0;i<n;i++)
    {
       for(j=0;j<m;j++)
          {
                 if (ktsnt(a[i][j]))
                 {
                        b[*demnt]=a[i][j];
                        *demnt = *demnt + 1;
                 }
                 if (ktsht(a[i][j]))
                 {
                        b[*demht]=a[i][j];
                        *demht= *demht + 1;
                 }
          }
    }
}
voidmain()
{
       unsigned long a[50][50],      // mang luu du lieu doc tu tep.
                     b[2500],demnt=0,// mang luu so nguyen to.
                     c[2500],demht=0;// mang luu so hoan thien.
       intm=0,n=0;
       docdl(a,&n,&m);
       xemmang2(a,n,m);
       xuly(a,n,m,b,&demnt,c,&demht);
       printf("\n Mang nguyen to dc tao la");
       xemmang1(b,demnt);
       printf("\n Mang so hoan thien dc tao la");
       xemmang1(c,demht);
       printf("\nHoan Tat ");
       getch();
}



2723. Những con đường quanh nông trang Mã bài: VRATF

2723. Những con đường quanh nông trang

Mã bài: VRATF

Các con bò của nông dân John có sở thích là hay đi khám phá những vùng xung quanh nông trang. Ban đầu, tất cả N (1 <= N <= 1,000,000,000) con bò tập trung thành 1 nhóm và cùng bắt đầu chuyến đi trên 1 con đường. Cho tới khi gặp một ngã ba đường thì chúng đôi khi chọn cách chia làm 2 nhóm nhỏ hơn ( mỗi nhóm ít nhất 1 bò ) và mỗi nhóm lại tiếp tục hành trình trên con đường của nhóm chúng. Khi một trong những nhóm này gặp 1 ngã ba khác thì nhóm này lại có thể tách ra tiếp, và cứ như vậy.
Các con bò đã hình thành nên 1 quy tắc về việc chia nhóm như sau: nếu chúng có thể chia thành 2 nhóm mà chênh lệch số bò của 2 nhóm là đúng bằng K (1 <= K <= 1000) thì tại ngã ba đó chúng sẽ chia làm 2; nếu không thì chúng sẽ dừng cuộc hành trình và đứng ở đó nhấm nháp cỏ non.
Giả sử rằng luôn có những ngã ba mới trên các con đường, hãy tính xem cuối cùng có bao nhiêu nhóm bò tất cả.

Dữ liệu

  • Dòng 1: 2 số nguyên cách nhau bởi dấu cách: N và K

Kết quả

  • Dòng 1: Một số nguyên cho biết số lượng nhóm bò sau cùng.

Ví dụ

Dữ liệu
6 2

Giải thích:
Có 6 con bò và độ chênh lệch khi xét chia nhóm là 2.

Kết quả
3

Giải thích:
Cuối cùng có 3 nhóm bò (1 nhóm có 2 bò, 1 nhóm có 1 và 1 nhóm có 3 ).

6
/ \
2 4
/ \
1 3



Được gửi lên bởi:Duc
Ngày:2008-05-24
Thời gian chạy:1s
Giới hạn mã nguồn:50000B
Memory limit:256MB
Cluster:Pyramid (Intel Pentium III 733 MHz)
Ngôn ngữ cho phép:Tất cả ngoại trừ: ERL JS NODEJS PERL 6
Nguồn bài:USACO US-Open 2008 - Bảng Bạc









code hàng đợi.


#include <stdio.h>
#include<algorithm>
unsigned long n,t[10000],dau=0,cuoi=1,dem=0;
int k;
voidchovao()
{
       t[cuoi]=(t[dau]+k)/2;
       t[cuoi+1]=(t[dau]-k)/2;
       cuoi+=2;
      
}

voidxuly()
{
       t[dau]=n;
       while(dau!=cuoi)
       {
              if((t[dau]-k)%2==0&&t[dau]>=(k+2)) chovao(); elsedem++;
              dau++;
       }
}
intmain()
{
       scanf("%lu%d",&n,&k);
       xuly();
       printf("%lu",dem);

}
















Tuesday, August 26, 2014

Câu 2: Viết chương trình làm các công việc sau: a. Tạo dữ liệu: Sinh ngẫu nhiên 50 số nguyên trong khoảng (-100, 100) và lưu các số đó vào tệp DULIEU.TXT gồm 1 dòng và 50 cột, mỗi số cách nhau một ký tự trống b. Sắp xếp: Đọc 50 số từ tệp DULIEU.TXT sắp xếp chúng theo thứ tự không giảm bằng các kỹ thuật: Sắp xếp chọn (Selection Sort), sắp xếp chèn (Insertion Sort), sắp xếp nổi bọt (Bubble Sort) và sắp xếp nhanh (Quick Sort). Lưu kết quả sắp xếp của mỗi kỹ thuật vào các tệp tương ứng là SXCHON.TXT, SXCHEN.TXT, SXNOIBOT.TXT và SXNHANH.TXT. Mặt khác trong dòng cuối của mỗi tệp sau khi sắp ghi thời gian đã sử dụng để sắp xếp dãy số trên.

Câu 2:
Viết chương trình làm các công việc sau:

a. Tạo dữ liệu:
Sinh ngẫu nhiên 50 số nguyên trong khoảng (-100, 100) và lưu các số đó vào tệp DULIEU.TXT gồm 1 dòng và 50 cột, mỗi số cách nhau một ký tự trống

b. Sắp xếp:
Đọc 50 số từ tệp DULIEU.TXT sắp xếp chúng theo thứ tự không giảm bằng các kỹ thuật:

Sắp xếp chọn (Selection Sort), sắp xếp chèn (Insertion Sort), sắp xếp nổi bọt (Bubble Sort) và sắp xếp nhanh (Quick Sort). Lưu kết quả sắp xếp của mỗi kỹ thuật vào các tệp tương ứng là SXCHON.TXT, SXCHEN.TXT, SXNOIBOT.TXT và SXNHANH.TXT. Mặt khác trong dòng cuối của mỗi tệp sau khi sắp ghi thời gian đã sử dụng để sắp xếp dãy số trên.

Code bài 2: file *.txt lưu ở nền ổ C cả

#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <ctime>
#include <stdlib.h>
using namespace std;
int n=50;
void sinhdl()// tao ngau nhien va ghi du lieu vao tep C:\\DULIEU.txt
{
      inti,k;
      FILE *u;
      u=fopen("C:\\DULIEU.txt","wt");
      for(i=0;i<n;i++)
      {
            k = rand() %(200)-100;// tao ngau nhien phan tu k trong khoanf -100
            den 100
            fprintf(u,"%d  ",k);
      }
      fclose(u);
      printf("\n 0k DULIEU.txt");
}
void docdl(int a[])
{
      inti;
      FILE *v;
      v=fopen("C:\\DULIEU.txt","rt");
      for(i=0;i<n;i++)
            fscanf(v,"%d",&a[i]);
}
void xemmang(int a[])
{
      inti;
      for(i=0;i<n;i++)
            printf("%d   ",a[i]);
      printf("\n");
}
void ghidl(int a[],FILE *l)
{
      inti;
      for(i=0;i<n;i++)
            fprintf(l,"%d   ",a[i]);
}
void copymang(int a[],int b[])
{
      inti;
      for(i=0;i<n;i++)
            b[i]=a[i];
}
void swap(int &a,int&b)
{
      inttg=a;
      a=b;
      b=tg;
}
void SapXepChon(int a[])
{
    inti,imin,j,tg;
       ///////Time/////////
      intms;
      std::clock_t    start;
    start = std::clock();
    //////start time ////
    for(i=0; i<=n-2; i++)
    {
       imin = i; //Tìm imin
       for(j=i+1; j<=n-1; j++)
           if (a[j] < a[imin])
           {
               imin = j;
           }
       //Hoán đi a[i] và a[imin]
         swap(a[i],a[imin]);
    }
      //////end time ////
    ms = (std::clock() - start)/(double)(CLOCKS_PER_SEC / 1000);
    ///////////////////
    FILE *u;
      u=fopen("c:\\SXCHON.txt","wt");
      ghidl(a,u);
      fprintf(u,"\nTime : %d",ms);
    fclose(u);
      printf("\n 0k SXCHON.txt");
      std::cout << "     Time  :   " << ms << " ms" << std::endl;
}
void SapXepChen(int a[])
{
     inti,tg,x;
       ///////Time/////////
      intms;
      std::clock_t    start;
    start = std::clock();
    //////start time ////
     for(i=1;i<n;i++)
      {
        tg=a[i];
        x=i-1;
        while((x>=0)&&(a[x]>tg))
            {
            a[x+1] = a[x];
            x--;
            }
        a[x+1] =tg;
     }
      //////end time ////
    ms = (std::clock() - start)/(double)(CLOCKS_PER_SEC / 1000);
    ///////////////////
      FILE *u;
      u=fopen("c:\\SXCHEN.txt","wt");
      ghidl(a,u);
      fprintf(u,"\nTime : %d",ms);
    fclose(u);
      printf("\n\n 0k SXCHEN.txt");
      std::cout << "     Time  :   " << ms << " ms" << std::endl;
}
void bubblesort(int a[]) //Bubble Sort
{
      inti,j,tg;
      ///////Time/////////
      intms;
      std::clock_t    start;
    start = std::clock();
    //////start time ////
      for(i=0;i<n-1;i++)
            for (j=i+1;j<n;j++)
                  if (a[i]>a[j])
                   //Hoán đi a[i] và a[j]
                  swap(a[i],a[j]);
      //////end time ////
    ms = (std::clock() - start)/(double)(CLOCKS_PER_SEC / 1000);
    ///////////////////
      FILE *u;
      u=fopen("c:\\SXNOIBOT.txt","wt");
      ghidl(a,u);
      fprintf(u,"\nTime : %d",ms);
      fclose(u);
      printf("\n 0k SXNOIBOT.txt");
      std::cout << "     Time  :   " << ms << " ms" << std::endl;
}
void quicksort2(int A[],int l,int r)
{
     if(l>=r) return;
     inti=l;
     intj=r;
     intx=A[(l+r)/2];
     while(i<=j)
     {
                while(A[i]<x) i++;
                while(A[j]>x) j--;
                if(i<=j)
                {// doi cho A[i] A[j]
                    swap(A[i],A[j]);
                    i++;j--;
               }
       }
     quicksort2(A,l,j);
     quicksort2(A,i,r);  
}
void quicksort1(int a[])
{
      ///////Time/////////
      intms;
      std::clock_t    start;
    start = std::clock();
    //////start time ////
      quicksort2(a,0,n-1);//sapxep
      //////end time ////
    ms = (std::clock() - start)/(double)(CLOCKS_PER_SEC / 1000);
    ///////////////////
      FILE *u;
      u=fopen("c:\\SXNHANH.txt","wt");
      ghidl(a,u);
      fprintf(u,"\nTime : %d",ms);
      fclose(u);
      printf("\n 0k SXNHANH.txt");
      std::cout << "     Time  :   " << ms << " ms" << std::endl;
}
void main()
{
      inta[50],b[50];
      sinhdl();
      docdl(a);
      //xemmang(a);
      copymang(a,b);
      SapXepChon(b);
      copymang(a,b);
      SapXepChen(b);
      copymang(a,b);
      bubblesort(b);
      copymang(a,b);
      quicksort1(b);
      getch();
}

===============================================
===============================================
===============================================


============code hiện rõ time xét 15000 số sinh ra rồi sắp xếp ========
Thay đổi phần bôi vàng


#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <ctime>
#include <stdlib.h>
using namespace std;
int n=15000;
void sinhdl()// tao ngau nhien va ghi du lieu vao tep C:\\DULIEU.txt
{
      inti,k;
      FILE *u;
      u=fopen("C:\\DULIEU.txt","wt");
      for(i=0;i<n;i++)
      {
            k = rand() %(200)-100;// tao ngau nhien phan tu k trong khoanf -100 den 100
            fprintf(u,"%d  ",k);
      }
      fclose(u);
      printf("\n 0k DULIEU.txt");
}
void docdl(int a[])
{
      inti;
      FILE *v;
      v=fopen("C:\\DULIEU.txt","rt");
      for(i=0;i<n;i++)
            fscanf(v,"%d",&a[i]);
}
void xemmang(int a[])
{
      inti;
      for(i=0;i<n;i++)
            printf("%d   ",a[i]);
      printf("\n");
}
void ghidl(int a[],FILE *l)
{
      inti;
      for(i=0;i<n;i++)
            fprintf(l,"%d   ",a[i]);
}
void copymang(int a[],int b[])
{
      inti;
      for(i=0;i<n;i++)
            b[i]=a[i];
}
void swap(int &a,int&b)
{
      inttg=a;
      a=b;
      b=tg;
}
void SapXepChon(int a[])
{
    inti,imin,j,tg;
       ///////Time/////////
      intms;
      std::clock_t    start;
    start = std::clock();
    //////start time ////
    for (i=0; i<=n-2; i++)
    {
       imin = i; //Tìm imin
       for(j=i+1; j<=n-1; j++)
           if (a[j] < a[imin])
           {
               imin = j;
           }
       //Hoán đi a[i] và a[imin]
         swap(a[i],a[imin]);
     }
      //////end time ////
      ms = (std::clock() - start)/(double)(CLOCKS_PER_SEC / 1000);
      ///////////////////
      FILE *u;
      u=fopen("c:\\SXCHON.txt","wt");
      ghidl(a,u);
      fprintf(u,"\nTime : %d",ms);
      fclose(u);
      printf("\n 0k SXCHON.txt");
      std::cout << "     Time  :   " << ms << " ms" << std::endl;
}
void SapXepChen(int a[])
{
     inti,tg,x;
       ///////Time/////////
      intms;
      std::clock_t    start;
      start = std::clock();
      //////start time ////
     for(i=1;i<n;i++)
      {
        tg=a[i];
        x=i-1;
        while((x>=0)&&(a[x]>tg))
            {
            a[x+1] = a[x];
            x--;
            }
        a[x+1] =tg;
      }
      //////end time ////
      ms = (std::clock() - start)/(double)(CLOCKS_PER_SEC / 1000);
      ///////////////////
      FILE *u;
      u=fopen("c:\\SXCHEN.txt","wt");
      ghidl(a,u);
      fprintf(u,"\nTime : %d",ms);
    fclose(u);
      printf("\n\n 0k SXCHEN.txt");
      std::cout << "     Time  :   " << ms << " ms" << std::endl;
}
void bubblesort(int a[]) //Bubble Sort
{
      inti,j,tg;
      ///////Time/////////
      intms;
      std::clock_t    start;
      start = std::clock();
      //////start time ////
      for(i=0;i<n-1;i++)
            for (j=i+1;j<n;j++)
                  if (a[i]>a[j])
                   //Hoán đi a[i] và a[j]
                  swap(a[i],a[j]);
      //////end time ////
      ms = (std::clock() - start)/(double)(CLOCKS_PER_SEC / 1000);
      ///////////////////
      FILE *u;
      u=fopen("c:\\SXNOIBOT.txt","wt");
      ghidl(a,u);
      fprintf(u,"\nTime : %d",ms);
      fclose(u);
      printf("\n 0k SXNOIBOT.txt");
      std::cout << "     Time  :   " << ms << " ms" << std::endl;
}
void quicksort2(int A[],int l,int r)
{
     if(l>=r) return;
     inti=l;
     intj=r;
     intx=A[(l+r)/2];
     while(i<=j)
     {
                while(A[i]<x) i++;
                while(A[j]>x) j--;
                if(i<=j)
                {// doi cho A[i] A[j]
                    swap(A[i],A[j]);
                    i++;j--;
               }
       }
     quicksort2(A,l,j);
     quicksort2(A,i,r);  
}
void quicksort1(int a[])
{
      ///////Time/////////
      intms;
      std::clock_t    start;
    start = std::clock();
    //////start time ////
      quicksort2(a,0,n-1);//sapxep
      //////end time ////
    ms = (std::clock() - start)/(double)(CLOCKS_PER_SEC / 1000);
    ///////////////////
      FILE *u;
      u=fopen("c:\\SXNHANH.txt","wt");
      ghidl(a,u);
      fprintf(u,"\nTime : %d",ms);
      fclose(u);
      printf("\n 0k SXNHANH.txt");
      std::cout << "     Time  :   " << ms << " ms" << std::endl;
}
void main()
{
      int a[15000],b[15000];
      ///////Time/////////
      intms;
      std::clock_t    start;
      start = std::clock();
      //////start time ////
      sinhdl();
      docdl(a);
      //xemmang(a);
      copymang(a,b);
      SapXepChon(b);
      copymang(a,b);
      SapXepChen(b);
      copymang(a,b);
      bubblesort(b);
      copymang(a,b);
      quicksort1(b);
      //////end time ////
      ms = (std::clock() - start)/(double)(CLOCKS_PER_SEC / 1000);
      ///////////////////
      std::cout << " \n  tong  Time  :   " << ms << " ms" << std::endl;
      getch();
}