Tìm kiếm nhị phân (cách làm của 10 Tin)
admin - 17/11/2018
#include <iostream>
#include<stdio.h>
using namespace std;
int n;long long k, a[1000001];
void vaora()
{
freopen("timkiem.inp","r",stdin);
freopen("timkiem.out","w",stdout);
}
void nhapmang()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
cin>>a[i];
}
void tknp(int l, int h)
{ if(l>h) {cout<<"NO"; return;}
int mid=(l+h)/2;
if(a[mid]==k) {cout<<"YES"; return;}
if(a[mid]>k) tknp(l,mid-1);
else tknp(mid+1,h);
}
int main()
{
vaora();
nhapmang();
tknp(1,n);
return 0;
}
(xem thêm)
Ví dụ tổng các chữ số của tập con của một tập hợp
admin - 03/11/2018
#include <iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
//Tong d(1,i-1)+a[i]=d(1,i) if a[i] xuat hien
//Tong(d(1,i-1)=d(1,i) if a[i] khong xuat hien
long long a[1000],b[1000],n,chiso=0;
void enter()
{
freopen("tong.inp","r",stdin);
freopen("tong.out","w",stdout);
}
void nhap()
{ cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
}
void f(int i,long long sum)
{
if(i==n+1) {chiso++;
b[chiso]=sum;
return;}
f(i+1,sum+a[i]);
f(i+1,sum);
}
int main()
{ enter();
nhap();
f(1,0);
sort(b+1,b+chiso+1);
for(int i=1;i<=chiso;i++)
&...
(xem thêm)
Chữa bài Mảng một chiều chia 3_2-Dạng toán đếm tổ hợp
admin - 08/10/2018
#include <iostream>
using namespace std;
int n;
//a[0] la so luong cac phan tu chia het cho 3
//a[1] la so luong cac phan tu chia 3 du 1
//a[2] la so luong cac phan tu chia 3 du 2
long long a[3];
int main() {
cin >> n;
for (int i = 0; i < n; ++i) {
int val;
cin >> val;
a[val % 3] += 1;
}
cout << a[0] * (a[0] - 1) / 2 + a[1] * a[2] << "\n";
}
Chữa bài Mảng một chiều-Thuật toán sàng số nguyên tố
admin - 08/10/2018
#include <bits/stdc++.h>
#define ll long long int
#define mod 1000000007
#define llt ll t;cin>>t;while(t--)
#define pb push_back
#define fi first
#define se second
#define mkp make_pair
#define all(v) v.begin(),v.end()
#define allr(v) v.rbegin(),v.rend()
#define rep(i,a,b) for (ll i = a; i<b; ++i)
using namespace std;
ll n;
//Neu i la so nguyen to thi prime[i]=true
//Neu i khong la so nguyen to thi prime[i]=false
bool prime[1000001];
int main()
{ cin>>n;
//Khoi tao prime[i] =true, nghia la gia su ban dau i la so nguyen to
memset(prime, true, sizeof(prime));
prime[0] = false;
prime[1] = false;
for(ll i=2;i<=sqrt(n);i++){
if(prime[i]==true)
for(ll j = i*i;j<=n;j+=i)
&nb...
(xem thêm)
Sinh hoán vị bằng hàm next_permutation
admin - 08/10/2018
// next_permutation example
#include <iostream> // std::cout
#include <algorithm> // std::next_permutation, std::sort
using namespace std;
int a[] = {3,2,1};
int main () {
sort (a,a+3);
do {
cout << a[0] << ' ' <<a[1] << ' ' <<a[2] << '\n';
} while ( next_permutation(a,a+3) );
cout << "After loop: " << a[0] << ' ' << a[1] << ' '
<< a[2] << '\n';
return 0;
}
admin - 08/10/2018
// next_permutation example
#include <iostream> // std::cout
#include <algorithm> // std::next_permutation, std::sort
using namespace std;
int a[] = {15,27,6,9,3,5,9};
bool cmp(int i,int j)
{
return i>j;
}
int main () {
sort (a,a+7,cmp);
for(int i=0;i<=6;i++)
cout<<a[i]<<" ";
return 0;
}
(xem thêm)
admin - 03/10/2018
#include <iostream>
#include<math.h>
using namespace std;
long ucln(long m,long n)
{ long r;
while(n!=0){r=m%n;m=n;n=r;}
return m;
}
long long bcnn(long m,long n)
{
return (1LL*m*n)/ucln(m,n);
}
void nguyento(long n)
{
bool ok=true;
for(long i=2;i<=sqrt(n);i++)
if(n%i==0) {ok=false;break;}
if(ok==true) cout<<"Yes";
else cout<<"No";
}
void hcn()
{
cout<<"******************"<<endl;
cout<<"* *"<<endl;
cout<<"******************"<<endl;
}
void in(int a[],int &n)
{
...
(xem thêm)