kiem tien, kiem tien online, kiem tien truc tuyen, kiem tien tren mang
Sunday, October 30, 2011



Bài 1:
Tóm tắt :
Nhập vào các bộ số, với mỗi bộ số ta có yêu cầu sau:


Số bộ số không lớn hơn 20:
Dữ liệu vào là 2 số tự nhiên x, y ( 1<=x, y <=5000)
Thực hiện: Tiến hành liên tục chia nguyên x cho 2 và nhân nguyên y cho 2 đến khi x =1.
Tại mỗi bước, mỗi khi x chẵn thì cộng y vào kết quả.
Ví dụ:
1
20
15
Ta có:









X =20; y =15






X = 10;y=30
Kq +=15





X = 5;y=60
Kq +=30;





X = 2;y = 120






X=1;y=240
Kq+=120


























Kq = 15 + 30 + 120  = 165
Giải thuật:
int test( int x, int y)
{
    while ( x khac 1)
    {
          if ( x chan) cong y vao ket qua;
          Giam x di 2 lan;
          Tang y len 2 lan;
    }
   
    tra ve gia tri ket qua;
}
   


#include

using namespace std;



int test( int x, int y)

{

int kq = 0;

while( x!=1)

{

if( x%2 == 0) kq +=y;

x = x>>1;

y = y<<1;

}

return kq;



}



int main()

{

int sum, a[20],b[20];

cin>> sum;

for(int i=1;i<=sum;i++)

{

cin>> a[i];

cin>>b[i];

}



for(int i=1;i<=sum;i++)

{

cout<< test(a[i],b[i])<< endl;

}



system("pause");

return 0;

}



  Bài 2:
Yêu cầu: Thực hiện dưới 20 test:
Nhập vào một dãy số nguyên dương N ={a1,a2,a3,a4,…,an}
Đưa ra số phần tử của giai đoạn dài nhất mà các phần tử tăng liên tiếp:
Ý tưởng:
Duyệt từ đầu danh sách:
Bắt đầu đếm từ 1;
Nếu các giá trị tăng liên tiếp, ta tăng liên tiếp biến đếm number;
Khi kết thúc một dãy tăng, ta so sánh giá trị giữa biến max và number;
Tiếp tục quá trình duyệt và đếm lại từ đầu
Giải thuật:
 int test( int a[], int n)
{
    int number , max = 1;
    duyet danh sach:
    while( danh sach chua duyet het)
    {
          int number = 1;
          while ( vẫn còn duyệt được tiếp && dãy vẫn tăng ) number ++;
          if( max < number) max = number;
         
    }
    tra ve gia tri max;
}
   
#include

using namespace std;



int test( int a[], int n)

{

int number, max = 1, i =1;

while(i<n
    {
       number = 1;
       while( i<n && a[i]<a[++i])number++;
       if(max < number) max = number;
     }



return max;

}



void Init(int a[],int &n )

{

cin>> n;

for( int i=1;i<=n;i++)

cin>> a[i];



}



int main()

{

int n, a[10000], sum, b[20];

cin >> sum;

for( int i =1; i<= sum;i++)

{

Init(a,n);

b[i] = test(a,n);

}



for( int i =1;i<=sum;i++)

cout<< b[i]<< endl;



system("pause");

return 0;

}







0 comments:

Post a Comment

domain, domain name, premium domain name for sales

Popular Posts