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