#include <bits/stdc++.h>
using namespace std;

bool Leapyear(int n){
	if (n % 400 == 0 || (n % 4 == 0 && n % 100 != 0)) return 1;
	return 0;
}
bool prime(int n){
	if (n == 1 || n == 0) return false;
	int m = sqrt(n);
	for (int i = 2; i <= m; i++){
		if (n % i == 0) return false;
	}
	return true;
}
int gcd(int n, int m){
	if (n < m) swap(n, m);
	int k = n % m;
	while (k != 0){
		n = m;
		m = k;
		k = n % k;
	}
	return m;
}
int lcm(int n, int m){
	return n * m / gcd(n, m);
}
void prime_zone(int n){
	bool arr[256];
	memset(arr, true, sizeof(arr));
	int m = sqrt(n);
	for (int i = 2; i <= m; i++){
		if (!arr[i]){
			for (int j = 2; i * j <= n; j++){
			arr[i * j] = false;
			}
		}
	}
	for (int i = 2; i < n; i++){
		if (arr[i]) cout << i << " ";
	}
}
void prime_factor(int n){
	cout << n << '=';
	for (int i = 2; i <= n / i; i++){
		while (n % i == 0 && prime(i)){
			cout << i << '*';
			n /= i;
		}
	}
	cout << n << endl;
}
bool palindromic_number(int n){
	int reverse = 0, nn = n, num;
	do {
		num = nn % 10;
		reverse = reverse * 10 + num;
		nn /= 10;
	}while (nn > 0);
	return (reverse == n);
}
bool palindromic_string(string n){
	int len = n.length();
	for (int i = 0; i < len / 2; i++){
		if (n[i] != n[len - i - 1]) return false;
	}
	return true;
}
string Binary(int n){
	string ans = "";
	while (n > 0){
		ans += n % 2 + '0';
		n /= 2;
	}
	reverse(ans.begin(), ans.end());
	return ans;
}
int Decimalism(string n){
	int ans = 0, i = 0;
	for (int j = 0; j < n.length(); j++){
		ans += (n[j] - '0') * pow(2, i);
		i++;
	}
	return ans;
}
int Sequential_Search(int arr[], int n, int m){
	for (int i = 0; i < n; i++){
		if (arr[i] == m) return i;
	}
	return -1;
}
int Binary_Search(int arr[], int low, int high, int value){
	if (low > high) return -1;
	int mid = low + ((high - low) / 2);
	if (arr[mid] == value) return mid - 1;
	else if (arr[mid] > value){
		Binary_Search(arr, low, mid - 1, value); 
	} else if (arr[mid] < value){
		Binary_Search(arr, mid + 1, high, value);
	} 
}
void Count_sort(int arr[], int n){
	int brr[100], cnt = 0;
	memset(brr, 0, sizeof(brr));
	for (int i = 0; i < n; i++){
		brr[arr[i]]++;
	}
	for (int i = 0; i < 100; i++){
		if (brr[i]){
			while (brr[i]--){
				arr[cnt] = i + 1;
				cnt++;
			}
		}
	}
}
int a = 5, n1 = -3;
double b = 1.14, f1 = -3.3, d1 = 1.23, d2 = 1.98, d3 = 1.45;
char c1 = '5', c2 = 'A', c3 = 'b';
int main(){
	freopen("filename.in", "r", stdin);
	freopen("filename.out", "w", stdout);
	cout << Leapyear(1900) << endl;
	cout << Leapyear(2000) << endl;
	cout << "-----------" << endl;
	cout << prime(2) << endl;
	cout << prime(9) << endl;
	cout << "-----------" << endl;
	cout << gcd(2, 3) << endl;
	cout << gcd(2, 4) << endl;
	cout << "-----------" << endl;
	cout << lcm(3, 10) << endl;
	cout << lcm(4, 10) << endl;
	cout << "-----------" << endl;
	prime_zone(10);
	cout << endl;
	cout << "-----------" << endl;
	prime_factor(20);
	cout << "-----------" << endl;
	cout << palindromic_number(121) << endl;
	cout << palindromic_number(122) << endl;
	cout << "-----------" << endl;
	cout << palindromic_string("abccba") << endl;
	cout << palindromic_string("abccbd") << endl;
	cout << "~~~~~~~~~~~~~~~" << endl;
	string s1 = to_string(a);
	string s2 = to_string(b);
	cout << s1 << " " << s2 << endl;
	cout << "-----------" << endl;
	cout << Binary(2) << endl;
	cout << "-----------" << endl;
	cout << Decimalism("101") << endl;
	cout << "-----------" << endl;
	cout << isdigit(c1) << " " << isupper(c2) << " " << islower(c3) << endl;
	cout << "-----------" << endl;
	cout << char(tolower(c2)) << endl;
	cout << char(toupper(c3)) << endl;
	cout << "-----------" << endl;
	cout << ceil(d1) << " " << floor(d2) << " " << round(d3) << endl;
	cout << "-----------" << endl;
	cout << abs(n1) << " " << fabs(f1) << endl;
	cout << "-----------" << endl;
	int n1 = 2, m1 = 4;
	cout << pow(n1, m1) << endl;            // 乘方
	int n2 = 16, m2 = 2;
	cout << pow(n2, 1.0 / m2) << endl;      // 开方
	cout << "~~~~~~~~~~~~~~~" << endl;
	char arr2[1000 + 1];
	memset(arr2, 0, sizeof(arr2));
	cin.getline(arr2, sizeof(arr2));
	cout << arr2 << endl;
	cout << "-----------" << endl;
	string s;
	getline(cin, s);
	cout << s << endl;
	cout << "-----------" << endl;
	char arr[100 + 1] = "abcXYZabc";
	string str(arr);
	cout << str << endl;
	cout << "-----------" << endl;
	str = "abcdef";
	strcpy(arr, str.c_str());
	cout << arr << endl;
	cout << "-----------" << endl;
	cout << strlen(arr2) << endl;
	cout << "-----------" << endl;
	char crr[100 + 1] = "114514", crr2[100 + 1] = "114514", crr3[100 + 1] = "3145";
	cout << strcmp(crr, crr2) << " " << strcmp(crr, crr3) << endl;
	cout << "-----------" << endl;
	strcat(crr, crr3);
	cout << crr << endl;
	cout << "-----------" << endl;
	strcpy(crr, crr3);
	cout << crr << endl;
	cout << "-----------" << endl;
	cout << str.length() << endl;
	string str1 = "qwerty", str2 = "qwerty", str3 = "poiuy";
	cout << str1 + " " + str3 << endl;
	str1.append(str3);
	cout << str1 << endl;
	cout << "-----------" << endl;
	str1 = str3;
	cout << str1 << endl;
	cout << "~~~~~~~~~~~~~~~" << endl;
	int nums[100], numss[100][100], nums_m;
	memset(nums, 0, sizeof(nums));
	int nums_len, numss_len1, numss_len2;
	cin >> nums_len;
	for (int i = 0; i < nums_len; i++) cin >> nums[i];
	for (int i = 0; i < nums_len; i++) cout << nums[i] << " ";
	cout << endl;
	cout << "-----------" << endl;
	memset(numss, 0, sizeof(numss));
	cin >> numss_len1 >> numss_len2;
	for	(int i = 0; i < numss_len1; i++){
		for	(int j = 0; j < numss_len2; j++) cin >> numss[i][j];
	}
	for	(int i = 0; i < numss_len1; i++){
		for	(int j = 0; j < numss_len2; j++){
			cout << numss[i][j] << " ";
		}
		cout << endl;
	}
	cout << "-----------" << endl;
	cin >> nums_m;
	cout << Sequential_Search(nums, nums_len, nums_m) << endl;
	sort(nums, nums + nums_len);
	cout << Binary_Search(nums, 0, nums_len, nums_m) << endl;
	cout << "-----------" << endl;
	int num[100], num_len;
	cin >> num_len;
	for (int i = 0; i < num_len; i++) cin >> num[i];
	Count_sort(num, num_len);
	for (int i = 0; i < num_len; i++) cout << num[i] << " ";
	cout << endl;
	cout << "-----------" << endl;
	return 0;
}

filename.in

fasd 4
asf 23
6
5 2 4 6 7 1
3 5
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
5
5 3 2 4 1

filename.out

0
1
-----------
1
0
-----------
1
2
-----------
30
20
-----------
2 3 4 5 6 7 8 9 
-----------
20=2*2*5
-----------
1
0
-----------
1
0
~~~~~~~~~~~~~~~
5 1.140000
-----------
10
-----------
5
-----------
1 1 2
-----------
a
B
-----------
2 1 1
-----------
3 3.3
-----------
16
4
~~~~~~~~~~~~~~~
fasd 4
-----------
asf 23
-----------
abcXYZabc
-----------
abcdef
-----------
6
-----------
0 -1
-----------
1145143145
-----------
3145
-----------
6
qwerty poiuy
qwertypoiuy
-----------
poiuy
~~~~~~~~~~~~~~~
5 2 4 6 7 1 
-----------
1 2 3 4 5 
2 3 4 5 6 
3 4 5 6 7 
-----------
0
2
-----------
1 2 3 4 5 
-----------