Practice Solutions
Select Contest/Language to See Solutions
Q1: Broken Messages
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 100
int main() {
char string1[MAX_LENGTH];
char string2[MAX_LENGTH];
char output_string[MAX_LENGTH * 2];
scanf("%[^\n]", string1);
getchar();
scanf("%[^\n]", string2);
getchar();
strcpy(output_string, string1);
strcat(output_string, " ");
strcat(output_string, string2);
printf("%s\n", output_string);
return 0;
}
Q2: Sum of Data
#include <stdio.h>
int main() {
int n, num = 0, total_sum = 0;
char ch;
scanf("%d", &n);
getchar();
while ((ch = getchar()) != '\n' && ch != EOF) {
if (ch >= '0' && ch <= '9') {
num = num * 10 + (ch - '0');
} else {
total_sum += num;
num = 0;
}
}
total_sum += num;
printf("%d\n", total_sum);
return 0;
}
Q3: Bigger in Reverse
#include <stdio.h>
#include <stdlib.h>
int main() {
int num, reversed_num = 0, original_num;
scanf("%d", &num);
original_num = num;
while (num > 0) {
reversed_num = reversed_num * 10 + (num % 10);
num /= 10;
}
if (reversed_num > original_num) {
printf("1\n");
} else {
printf("0\n");
}
return 0;
}
Q4: Rotational Data Error
#include <stdio.h>
#include <string.h>
int main() {
char data[100];
scanf("%s", data);
for (int i = 0; i < strlen(data); i++) {
if (data[i] == '9') {
data[i] = '0';
}
}
printf("%s\n", data);
return 0;
}
Q5: Better in Binary
#include <stdio.h>
int main() {
char communication[26];
scanf("%25s", communication);
int binary = 1;
for (int i = 0; communication[i] != '\0'; i++) {
if (communication[i] != '0' && communication[i] != '1') {
binary = 0;
break;
}
}
printf("%d\n", binary);
return 0;
}
Q6: Final Test of Intelligence
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int ascending = 1;
for (int i = 0; i < n - 1; i++) {
if (arr[i] > arr[i + 1]) {
ascending = 0;
break;
}
}
printf("%d\n", ascending);
return 0;
}
Q1: Broken Messages
#include <iostream>
#include <string>
int main() {
std::string string1, string2;
std::getline(std::cin, string1);
std::getline(std::cin, string2);
std::string output_string = string1 + " " + string2;
std::cout << output_string << std::endl;
return 0;
}
Q2: Sum of Data
#include <iostream>
#include <vector>
int main() {
int n, sum = 0;
std::cin >> n;
for (int i = 0; i < n; i++) {
int num;
std::cin >> num;
sum += num;
}
std::cout << sum << std::endl;
return 0;
}
Q3: Bigger in Reverse
#include <iostream>
using namespace std;
int main() {
int num, reversed_num = 0, original_num;
cin >> num;
original_num = num;
while (num != 0) {
reversed_num = reversed_num * 10 + num % 10;
num /= 10;
}
if (reversed_num > original_num) {
cout << "1" << endl;
} else {
cout << "0" << endl;
}
return 0;
}
Q4: Rotational Data Error
#include <iostream>
#include <string>
int main() {
std::string data;
std::cin >> data;
for (char &c : data) {
if (c == '9') {
c = '0';
}
}
std::cout << data << std::endl;
return 0;
}
Q5: Better in Binary
#include <iostream>
#include <string>
int main() {
std::string communication;
std::cin >> communication;
bool binary = true;
for (char k : communication) {
if (k != '0' && k != '1') {
binary = false;
break;
}
}
std::cout << (binary ? 1 : 0) << std::endl;
return 0;
}
Q6: Final Test of Intelligence
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int arr[n];
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
int ascending = 1;
for (int i = 0; i < n - 1; i++) {
if (arr[i] > arr[i + 1]) {
ascending = 0;
break;
}
}
cout << ascending << endl;
return 0;
}
Q1: Broken Messages
string1 = input()
string2 = input()
output_string = string1 + " " + string2
print(output_string)
Q2: Sum of Data
n = input()
total_sum = 0
num = 0
for char in input():
if (char != " "):
num = num * 10 + int(char)
else:
total_sum += num
num = 0
total_sum += num
print(total_sum)
Q3: Bigger in Reverse
num = int(input())
reversed_num = int(str(num)[::-1])
if reversed_num > num:
print(1)
else:
print(0)
Q4: Rotational Data Error
original = input()
corrected = ''
for char in original:
if char == '9':
corrected += '0'
else:
corrected += char
print(corrected)
Q5: Better in Binary
communication = input()
if all(k in '01' for k in communication):
print(1)
else:
print(0)
Q6: Final Test of Intelligence
n = int(input())
arr = list(map(int, input().split()))
ascending = 1
for i in range(n - 1):
if arr[i] > arr[i + 1]:
ascending = 0
break
print(ascending)
Q1: Broken Messages
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String string1 = scanner.nextLine();
String string2 = scanner.nextLine();
String outputString = string1 + " " + string2;
System.out.println(outputString);
scanner.close();
}
}
Q2: Sum of Data
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int sum = 0;
for (int i = 0; i < n; i++) {
sum += scanner.nextInt();
}
System.out.println(sum);
scanner.close();
}
}
Q3: Bigger in Reverse
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
int originalNum = num;
int reversedNum = 0;
while (num != 0) {
reversedNum = reversedNum * 10 + num % 10;
num /= 10;
}
if (reversedNum > originalNum) {
System.out.println(1);
} else {
System.out.println(0);
}
scanner.close();
}
}
Q4: Rotational Data Error
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String data = scanner.nextLine();
StringBuilder result = new StringBuilder();
for (char c : data.toCharArray()) {
if (c == '9') {
result.append('0');
} else {
result.append(c);
}
}
System.out.println(result.toString());
scanner.close();
}
}
Q5: Better in Binary
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String message = scanner.next();
scanner.close();
boolean binary = true;
for (char k : message.toCharArray()) {
if (k != '0' && k != '1') {
binary = false;
break;
}
}
System.out.println(binary ? 1 : 0);
}
}
Q6: Final Test of Intelligence
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] array = new int[n];
for (int i = 0; i < n; i++) {
array[i] = scanner.nextInt();
}
boolean ascending = true;
for (int i = 1; i < n; i++) {
if (array[i] < array[i - 1]) {
ascending = false;
break;
}
}
System.out.println(ascending ? 1 : 0);
}
}
Q1: Colour Scheme
#include <stdio.h>
#include <string.h>
int main() {
char colour1[10], colour2[10];
scanf("%s", colour1);
scanf("%s", colour2);
if ((strcmp(colour1, "Red") == 0 && strcmp(colour2, "White") == 0) ||
(strcmp(colour1, "White") == 0 && strcmp(colour2, "Red") == 0)) {
printf("Orange\n");
} else if ((strcmp(colour1, "Red") == 0 && strcmp(colour2, "Orange") == 0) ||
(strcmp(colour1, "Orange") == 0 && strcmp(colour2, "Red") == 0)) {
printf("White\n");
} else {
printf("Red\n");
}
return 0;
}
Q2: Elite Gaming
#include <stdio.h>
int main() {
char s[101];
scanf("%100s", s);
for (int i = 0; s[i + 1] != '\0'; i++) {
if (s[i] == s[i + 1]) {
printf("BAD\n");
return 0;
}
}
printf("GOOD\n");
return 0;
}
Q3: Gradees
#include <stdio.h>
int main() {
int grade;
scanf("%d", &grade);
if (grade >= 80 && grade <= 100) {
printf("A\n");
} else if (grade >= 70 && grade <= 79) {
printf("B\n");
} else if (grade >= 60 && grade <= 69) {
printf("C\n");
} else if (grade >= 50 && grade <= 59) {
printf("D\n");
} else {
printf("F\n");
}
return 0;
}
Q4: Rectangles
#include <stdio.h>
int main() {
int N, length, width;
scanf("%d", &N);
for (int i = 0; i < N; i++) {
scanf("%d %d", &length, &width);
printf("%d\n", length * width);
}
return 0;
}
Q5: Anagrams
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int compare(const void *a, const void *b) {
return (*(char *)a - *(char *)b);
}
int main() {
char word1[11], word2[11];
scanf("%s", word1);
scanf("%s", word2);
if (strlen(word1) != strlen(word2)) {
printf("no\n");
return 0;
}
qsort(word1, strlen(word1), sizeof(char), compare);
qsort(word2, strlen(word2), sizeof(char), compare);
if (strcmp(word1, word2) == 0) {
printf("yes\n");
} else {
printf("no\n");
}
return 0;
}
Q6: Averages
#include <stdio.h>
int main() {
int num_of_classes;
scanf("%d", &num_of_classes);
int grades[num_of_classes];
int sum = 0;
for (int i = 0; i < num_of_classes; i++) {
scanf("%d", &grades[i]);
sum += grades[i];
}
double average = (double)sum / num_of_classes;
for (int i = 0; i < num_of_classes; i++) {
if (grades[i] > average) {
printf("higher\n");
} else if (grades[i] < average) {
printf("lower\n");
} else {
printf("equal\n");
}
}
return 0;
}
Q7: Class Time
#include <stdio.h>
int main() {
int curr_h, curr_m, end_h, end_m;
scanf("%d:%d", &curr_h, &curr_m);
scanf("%d:%d", &end_h, &end_m);
int curr_time = curr_h * 60 + curr_m;
int end_time = end_h * 60 + end_m;
if (end_time <= curr_time) {
end_time += 24 * 60;
}
printf("%d\n", end_time - curr_time);
return 0;
}
Q1: Colour Scheme
#include <iostream>
#include <set>
int main() {
std::set<std::string> colours = {"Red", "Orange", "White"};
std::string colour1, colour2;
std::cin >> colour1 >> colour2;
for (const std::string& colour : colours) {
if (colour != colour1 && colour != colour2) {
std::cout << colour << std::endl;
break;
}
}
return 0;
}
Q2: Elite Gaming
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
cin >> s;
for (int i = 0; i < s.size() - 1; i++) {
if (s[i] == s[i + 1]) {
cout << "BAD" << endl;
return 0;
}
}
cout << "GOOD" << endl;
return 0;
}
Q3: Gradees
#include <iostream>
int main() {
int grade;
std::cin >> grade;
if (grade >= 80 && grade <= 100) {
std::cout << "A\n";
} else if (grade >= 70 && grade <= 79) {
std::cout << "B\n";
} else if (grade >= 60 && grade <= 69) {
std::cout << "C\n";
} else if (grade >= 50 && grade <= 59) {
std::cout << "D\n";
} else {
std::cout << "F\n";
}
return 0;
}
Q4: Rectangles
#include <iostream>
int main() {
int N, length, width;
std::cin >> N;
for (int i = 0; i < N; i++) {
std::cin >> length >> width;
std::cout << (length * width) << std::endl;
}
return 0;
}
Q5: Anagrams
#include <iostream>
#include <algorithm>
int main() {
std::string word1, word2;
std::cin >> word1 >> word2;
if (word1.length() != word2.length()) {
std::cout << "no\n";
return 0;
}
std::sort(word1.begin(), word1.end());
std::sort(word2.begin(), word2.end());
if (word1 == word2) {
std::cout << "yes\n";
} else {
std::cout << "no\n";
}
return 0;
}
Q6: Averages
#include <iostream>
#include <vector>
using namespace std;
int main() {
int num_of_classes;
cin >> num_of_classes;
vector<int> grades(num_of_classes);
int sum = 0;
for (int i = 0; i < num_of_classes; i++) {
cin >> grades[i];
sum += grades[i];
}
double average = static_cast<double>(sum) / num_of_classes;
for (int grade : grades) {
if (grade > average) {
cout << "higher" << endl;
} else if (grade < average) {
cout << "lower" << endl;
} else {
cout << "equal" << endl;
}
}
return 0;
}
Q7: Class Time
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int curr_h, curr_m, end_h, end_m;
char colon;
cin >> curr_h >> colon >> curr_m;
cin >> end_h >> colon >> end_m;
int curr_time = curr_h * 60 + curr_m;
int end_time = end_h * 60 + end_m;
if (end_time <= curr_time) {
end_time += 24 * 60;
}
cout << (end_time - curr_time) << endl;
return 0;
}
Q1: Colour Scheme
locolours = {"Red", "Orange", "White"}
colour1 = input()
colour2 = input()
print((locolours - {colour1, colour2}).pop())
Q2: Elite Gaming
s = input()
for i in range(len(s) - 1):
if s[i] == s[i + 1]:
print("BAD")
break
else:
print("GOOD")
Q3: Gradees
#include <iostream>
grade = int(input())
if 80 <= grade <= 100:
print("A")
elif 70 <= grade <= 79:
print("B")
elif 60 <= grade <= 69:
print("C")
elif 50 <= grade <= 59:
print("D")
else:
print("F")
Q4: Rectangles
#include <iostream>
N = int(input())
for i in range(N):
length = int(input())
width = int(input())
print(length * width)
Q5: Anagrams
word1 = input()
word2 = input()
if sorted(word1) == sorted(word2):
print("yes")
else:
print("no")
Q6: Averages
num_of_classes = int(input())
grades = list(map(int, input().split()))
average = sum(grades) / num_of_classes
for grade in grades:
if grade > average:
print("higher")
elif grade < average:
print("lower")
else:
print("equal")
Q7: Class Time
curr_time = input()
end_time = input()
curr_h, curr_m = map(int, curr_time.split(":"))
end_h, end_m = map(int, end_time.split(":"))
curr_time = curr_h * 60 + curr_m
end_time = end_h * 60 + end_m
if end_time <= curr_time:
end_time += 24 * 60
print(end_time - curr_time)
Q1: Colour Scheme
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String colour1 = scanner.nextLine();
String colour2 = scanner.nextLine();
if (!colour1.equals("Red") && !colour2.equals("Red")) {
System.out.println("Red");
} else if (!colour1.equals("Orange") && !colour2.equals("Orange")) {
System.out.println("Orange");
} else {
System.out.println("White");
}
scanner.close();
}
}
Q2: Elite Gaming
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.next();
scanner.close();
for (int i = 0; i < s.length() - 1; i++) {
if (s.charAt(i) == s.charAt(i + 1)) {
System.out.println("BAD");
return;
}
}
System.out.println("GOOD");
}
}
Q3: Gradees
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int grade = scanner.nextInt();
scanner.close();
if (grade >= 80 && grade <= 100) {
System.out.println("A");
} else if (grade >= 70 && grade <= 79) {
System.out.println("B");
} else if (grade >= 60 && grade <= 69) {
System.out.println("C");
} else if (grade >= 50 && grade <= 59) {
System.out.println("D");
} else {
System.out.println("F");
}
}
}
Q4: Rectangles
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
for (int i = 0; i < N; i++) {
int length = scanner.nextInt();
int width = scanner.nextInt();
System.out.println(length * width);
}
scanner.close();
}
}
Q5: Anagrams
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String word1 = scanner.next();
String word2 = scanner.next();
scanner.close();
if (word1.length() != word2.length()) {
System.out.println("no");
return;
}
char[] arr1 = word1.toCharArray();
char[] arr2 = word2.toCharArray();
Arrays.sort(arr1);
Arrays.sort(arr2);
if (Arrays.equals(arr1, arr2)) {
System.out.println("yes");
} else {
System.out.println("no");
}
}
}
Q6: Averages
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int numOfClasses = scanner.nextInt();
int[] grades = new int[numOfClasses];
int sum = 0;
for (int i = 0; i < numOfClasses; i++) {
grades[i] = scanner.nextInt();
sum += grades[i];
}
double average = (double) sum / numOfClasses;
for (int grade : grades) {
if (grade > average) {
System.out.println("higher");
} else if (grade < average) {
System.out.println("lower");
} else {
System.out.println("equal");
}
}
scanner.close();
}
}
Q7: Class Time
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] currTime = scanner.next().split(":");
String[] endTime = scanner.next().split(":");
int currH = Integer.parseInt(currTime[0]);
int currM = Integer.parseInt(currTime[1]);
int endH = Integer.parseInt(endTime[0]);
int endM = Integer.parseInt(endTime[1]);
int startTime = currH * 60 + currM;
int endTime2 = endH * 60 + endM;
if (endTime2 <= startTime) {
endTime2 += 24 * 60;
}
System.out.println(endTime2 - startTime);
scanner.close();
}
}
Q1: Reversal
#include <stdio.h>
#include <string.h>
void reverse(char *s, int left, int right) {
if (left >= right) return;
char temp = s[left];
s[left] = s[right];
s[right] = temp;
reverse(s, left + 1, right - 1);
}
int main() {
char s[101];
scanf("%100s", s);
int length = strlen(s);
reverse(s, 0, length - 1);
printf("%s\n", s);
return 0;
}
Q2: Prime Bag
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#ifdef __GNUC__
typedef __int128 int128;
#endif
static inline long long mul_mod(long long a, long long b, long long mod) {
int128 t = a;
t *= b;
t %= mod;
return (long long)t;
}
int main(void) {
int P;
if (scanf("%d", &P) != 1) return 1;
long long p = P;
long long mod = p * p;
int m = (5 * P + 16) / 17;
int K = P - m;
long long sum_inv = 0;
if (K > 0) {
long long *inv = (long long *) malloc((K + 1) * sizeof(long long));
if (!inv) return 1;
inv[1] = 1;
for (int i = 2; i <= K; i++) {
int r = mod % i;
long long d = mod / i;
inv[i] = (mod - mul_mod(d, inv[r], mod)) % mod;
}
for (int i = 1; i <= K; i++) {
if (i & 1)
sum_inv = (sum_inv + inv[i]) % mod;
else
sum_inv = (sum_inv + mod - inv[i]) % mod;
}
free(inv);
}
long long ans = (1 + p * sum_inv) % mod;
printf("%lld\n", ans);
return 0;
}
Q3: Queens on a Chessboard
#include <stdio.h>
char board[8][9];
int fullCol[8];
int fullDiag1[15];
int fullDiag2[15];
int solutionCount = 0;
void queens(int row) {
if (row == 8) {
solutionCount++;
return;
}
for (int col = 0; col < 8; col++) {
if (board[row][col] == '*') continue;
if (fullCol[col] || fullDiag1[row - col + 7] || fullDiag2[row + col]) continue;
fullCol[col] = 1;
fullDiag1[row - col + 7] = 1;
fullDiag2[row + col] = 1;
queens(row + 1);
fullCol[col] = 0;
fullDiag1[row - col + 7] = 0;
fullDiag2[row + col] = 0;
}
}
int main() {
for (int i = 0; i < 8; i++) {
scanf("%s", board[i]);
}
queens(0);
printf("%d\n", solutionCount);
return 0;
}
Q4: Knapsack
#include <stdio.h>
int main() {
int N, M;
scanf("%d %d", &N, &M);
int items[1000];
for (int i = 0; i < M; i++) {
scanf("%d", &items[i]);
}
int achievable[1001] = {0};
achievable[0] = 1;
for (int i = 0; i < M; i++) {
int weight = items[i];
for (int j = N; j >= weight; j--) {
if (achievable[j - weight]) {
achievable[j] = 1;
}
}
}
for (int i = N; i >= 0; i--) {
if (achievable[i]) {
printf("%d\n", i);
break;
}
}
return 0;
}
Q5: Find the Number
#include <stdio.h>
#include <string.h>
void calc(long long l, long long u) {
if (u - l <= 1) {
printf("! %lld\n", l);
fflush(stdout);
return;
}
long long val = (l + u) / 2;
printf("? %lld\n", val);
fflush(stdout);
char reply[10];
scanf("%s", reply);
if (strcmp(reply, "<=") == 0) {
calc(val, u);
} else {
calc(l, val);
}
}
int main() {
long long lower = 1;
long long upper = 1000000000;
calc(lower, upper);
return 0;
}
Q1: Reversal
#include <iostream>
#include <string>
using namespace std;
void reverse(string &s, int left, int right) {
if (left >= right) return;
swap(s[left], s[right]);
reverse(s, left + 1, right - 1);
}
int main() {
string s;
cin >> s;
reverse(s, 0, s.length() - 1);
cout << s << endl;
return 0;
}
Q2: Prime Bag
#include <iostream>
#include <vector>
using namespace std;
typedef __int128 int128;
using ll = long long;
ll mul_mod(ll a, ll b, ll mod) {
int128 t = a;
t *= b;
t %= mod;
return (ll)t;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int P;
cin >> P;
ll p = P;
ll mod = p * p;
int m = (5LL * P + 16) / 17;
int K = P - m;
ll sum_inv = 0;
if (K > 0) {
vector<ll> inv(K + 1, 0);
inv[1] = 1;
for (int i = 2; i <= K; i++) {
int r = int(mod % i);
ll d = mod / i;
inv[i] = (mod - mul_mod(d, inv[r], mod)) % mod;
}
for (int i = 1; i <= K; i++) {
if (i & 1) {
sum_inv = (sum_inv + inv[i]) % mod;
} else {
sum_inv = (sum_inv + mod - inv[i]) % mod;
}
}
}
ll ans = (1 + p * sum_inv) % mod;
cout << ans << "\n";
return 0;
}
Q3: Queens on a Chessboard
#include <iostream>
#include <vector>
#include <string>
#include <unordered_set>
using namespace std;
int solutionCount = 0;
void queens(int row, vector<string>& board, vector<bool>& fullCol,
vector<bool>& fullDiag1, vector<bool>& fullDiag2) {
if (row == 8) {
solutionCount++;
return;
}
for (int col = 0; col < 8; col++) {
if (board[row][col] == '*') continue;
if (fullCol[col] || fullDiag1[row - col + 7] || fullDiag2[row + col]) continue;
fullCol[col] = true;
fullDiag1[row - col + 7] = true;
fullDiag2[row + col] = true;
queens(row + 1, board, fullCol, fullDiag1, fullDiag2);
fullCol[col] = false;
fullDiag1[row - col + 7] = false;
fullDiag2[row + col] = false;
}
}
int main() {
vector<string> board(8);
for (int i = 0; i < 8; i++) {
cin >> board[i];
}
vector<bool> fullCol(8, false);
vector<bool> fullDiag1(15, false);
vector<bool> fullDiag2(15, false);
queens(0, board, fullCol, fullDiag1, fullDiag2);
cout << solutionCount << endl;
return 0;
}
Q4: Knapsack
#include <iostream>
#include <vector>
using namespace std;
int main() {
int N, M;
cin >> N >> M;
vector<int> items(M);
for (int i = 0; i < M; ++i) {
cin >> items[i];
}
vector<int> achievable(N + 1, 0);
achievable[0] = 1;
for (int i = 0; i < M; ++i) {
int weight = items[i];
for (int j = N; j >= weight; --j) {
if (achievable[j - weight]) {
achievable[j] = 1;
}
}
}
for (int i = N; i >= 0; --i) {
if (achievable[i]) {
cout << i << endl;
break;
}
}
return 0;
}
Q5: Find the Number
#include <iostream>
#include <string>
using namespace std;
void calc(long long l, long long u) {
if (u - l <= 1) {
cout << "! " << l << endl;
cout.flush();
return;
}
long long val = (l + u) / 2;
cout << "? " << val << endl;
cout.flush();
string reply;
cin >> reply;
if (reply == "<=") {
calc(val, u);
} else {
calc(l, val);
}
}
int main() {
long long lower = 1;
long long upper = 1000000000;
calc(lower, upper);
return 0;
}
Q1: Reversal
def reverse(s):
if len(s) == 0:
return ""
return s[-1] + reverse(s[:-1])
s = input()
print(reverse(s))
Q2: Prime Bag
import math
def solve(P):
min_balls_for_beryl = math.ceil(5 * P / 17)
max_balls_for_alphonse = P - min_balls_for_beryl
total_ways = 1 # C(P, 0) is always 1
binomial_coefficient = 1
for k in range(1, max_balls_for_alphonse + 1):
binomial_coefficient = binomial_coefficient * (P - k + 1) // k
total_ways += binomial_coefficient
return total_ways % (P * P)
P = int(input())
print(solve(P))
Q3: Queens on a Chessboard
def is_valid(board, row, col, cols, diag1, diag2):
if col in cols or (row - col) in diag1 or (row + col) in diag2:
return False
if board[row][col] == '*':
return False
return True
def place_queens(board, row, cols, diag1, diag2, count):
if row == 8:
count[0] += 1
return
for col in range(8):
if is_valid(board, row, col, cols, diag1, diag2):
cols.add(col)
diag1.add(row - col)
diag2.add(row + col)
place_queens(board, row + 1, cols, diag1, diag2, count)
cols.remove(col)
diag1.remove(row - col)
diag2.remove(row + col)
def solve(board):
cols = set()
diag1 = set()
diag2 = set()
count = [0]
place_queens(board, 0, cols, diag1, diag2, count)
return count[0]
board = [input().strip() for _ in range(8)]
print(solve(board))
Q4: Knapsack
N, M = map(int, input().split())
items = list(map(int, input().split()))
achievable = [False] * (N + 1)
achievable[0] = True
for weight in items:
for i in range(N, weight - 1, -1):
if achievable[i - weight]:
achievable[i] = True
for i in range(N, -1, -1):
if achievable[i]:
print(i)
break
Q5: Find the Number
lower = 1
upper = 10**9
def calc(l, u):
if u - l <= 1:
print(f"! {l}", flush=True)
return
val = (l + u) // 2
print(f"? {val}", flush=True)
reply = input()
if reply == "<=":
calc(val, u)
else:
calc(l, val)
calc(lower, upper)
Q1: Reversal
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.next();
scanner.close();
System.out.println(reverse(s));
}
private static String reverse(String s) {
if (s.isEmpty()) return "";
return s.charAt(s.length() - 1) + reverse(s.substring(0, s.length() - 1));
}
}
Q2: Prime Bag
import java.util.Scanner;
public class Main {
static long modMul(long a, long b, long mod) {
a %= mod;
b %= mod;
long result = 0;
while (b > 0) {
if ((b & 1) == 1) {
result += a;
if (result >= mod) result -= mod;
}
a <<= 1;
if (a >= mod) a -= mod;
b >>= 1;
}
return result;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int P = sc.nextInt();
long p = P;
long mod = p * p;
int m = (int)((5L * P + 16) / 17);
int K = P - m;
long sumInv = 0;
if (K > 0) {
long[] inv = new long[K + 1];
inv[1] = 1;
for (int i = 2; i <= K; i++) {
long r = mod % i;
long d = mod / i;
inv[i] = (mod - modMul(d, inv[(int) r], mod)) % mod;
}
for (int i = 1; i <= K; i++) {
if ((i & 1) == 1) {
sumInv = (sumInv + inv[i]) % mod;
} else {
sumInv = (sumInv + mod - inv[i]) % mod;
}
}
}
long ans = (1 + modMul(p, sumInv, mod)) % mod;
System.out.println(ans);
sc.close();
}
}
Q3: Queens on a Chessboard
import java.util.Scanner;
public class Main {
static char[][] board = new char[8][8];
static boolean[] fullCol = new boolean[8];
static boolean[] fullDiag1 = new boolean[15];
static boolean[] fullDiag2 = new boolean[15];
static int solutionCount = 0;
public static void queens(int row) {
if (row == 8) {
solutionCount++;
return;
}
for (int col = 0; col < 8; col++) {
if (board[row][col] == '*') continue;
if (fullCol[col] || fullDiag1[row - col + 7] || fullDiag2[row + col]) continue;
fullCol[col] = true;
fullDiag1[row - col + 7] = true;
fullDiag2[row + col] = true;
queens(row + 1);
fullCol[col] = false;
fullDiag1[row - col + 7] = false;
fullDiag2[row + col] = false;
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < 8; i++) {
String line = scanner.nextLine();
board[i] = line.toCharArray();
}
queens(0);
System.out.println(solutionCount);
scanner.close();
}
}
Q4: Knapsack
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int M = scanner.nextInt();
int[] items = new int[M];
for (int i = 0; i < M; i++) {
items[i] = scanner.nextInt();
}
boolean[] achievable = new boolean[N + 1];
achievable[0] = true;
for (int i = 0; i < M; i++) {
int weight = items[i];
for (int j = N; j >= weight; j--) {
if (achievable[j - weight]) {
achievable[j] = true;
}
}
}
for (int i = N; i >= 0; i--) {
if (achievable[i]) {
System.out.println(i);
break;
}
}
scanner.close();
}
}
Q5: Find the Number
import java.util.Scanner;
public class Main {
static Scanner scanner = new Scanner(System.in);
public static void calc(long l, long u) {
if (u - l <= 1) {
System.out.println("! " + l);
System.out.flush();
return;
}
long val = (l + u) / 2;
System.out.println("? " + val);
System.out.flush();
String reply = scanner.next();
if (reply.equals("<=")) {
calc(val, u);
} else {
calc(l, val);
}
}
public static void main(String[] args) {
long lower = 1;
long upper = 1_000_000_000;
calc(lower, upper);
}
}
Q1: Broken Messages
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 100
int main() {
char string1[MAX_LENGTH];
char string2[MAX_LENGTH];
char output_string[MAX_LENGTH * 2];
scanf("%[^\n]", string1);
getchar();
scanf("%[^\n]", string2);
getchar();
strcpy(output_string, string1);
strcat(output_string, " ");
strcat(output_string, string2);
printf("%s\n", output_string);
return 0;
}
Q2: Sum of Data
#include <stdio.h>
int main() {
int n, num = 0, total_sum = 0;
char ch;
scanf("%d", &n);
getchar();
while ((ch = getchar()) != '\n' && ch != EOF) {
if (ch >= '0' && ch <= '9') {
num = num * 10 + (ch - '0');
} else {
total_sum += num;
num = 0;
}
}
total_sum += num;
printf("%d\n", total_sum);
return 0;
}
Q3: Bigger in Reverse
#include <stdio.h>
#include <stdlib.h>
int main() {
int num, reversed_num = 0, original_num;
scanf("%d", &num);
original_num = num;
while (num > 0) {
reversed_num = reversed_num * 10 + (num % 10);
num /= 10;
}
if (reversed_num > original_num) {
printf("1\n");
} else {
printf("0\n");
}
return 0;
}
Q4: Rotational Data Error
#include <stdio.h>
#include <string.h>
int main() {
char data[100];
scanf("%s", data);
for (int i = 0; i < strlen(data); i++) {
if (data[i] == '9') {
data[i] = '0';
}
}
printf("%s\n", data);
return 0;
}
Q5: Better in Binary
#include <stdio.h>
int main() {
char communication[26];
scanf("%25s", communication);
int binary = 1;
for (int i = 0; communication[i] != '\0'; i++) {
if (communication[i] != '0' && communication[i] != '1') {
binary = 0;
break;
}
}
printf("%d\n", binary);
return 0;
}
Q6: Final Test of Intelligence
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int ascending = 1;
for (int i = 0; i < n - 1; i++) {
if (arr[i] > arr[i + 1]) {
ascending = 0;
break;
}
}
printf("%d\n", ascending);
return 0;
}
Q1: Broken Messages
#include <iostream>
#include <string>
int main() {
std::string string1, string2;
std::getline(std::cin, string1);
std::getline(std::cin, string2);
std::string output_string = string1 + " " + string2;
std::cout << output_string << std::endl;
return 0;
}
Q2: Sum of Data
#include <iostream>
#include <vector>
int main() {
int n, sum = 0;
std::cin >> n;
for (int i = 0; i < n; i++) {
int num;
std::cin >> num;
sum += num;
}
std::cout << sum << std::endl;
return 0;
}
Q3: Bigger in Reverse
#include <iostream>
using namespace std;
int main() {
int num, reversed_num = 0, original_num;
cin >> num;
original_num = num;
while (num != 0) {
reversed_num = reversed_num * 10 + num % 10;
num /= 10;
}
if (reversed_num > original_num) {
cout << "1" << endl;
} else {
cout << "0" << endl;
}
return 0;
}
Q4: Rotational Data Error
#include <iostream>
#include <string>
int main() {
std::string data;
std::cin >> data;
for (char &c : data) {
if (c == '9') {
c = '0';
}
}
std::cout << data << std::endl;
return 0;
}
Q5: Better in Binary
#include <iostream>
#include <string>
int main() {
std::string communication;
std::cin >> communication;
bool binary = true;
for (char k : communication) {
if (k != '0' && k != '1') {
binary = false;
break;
}
}
std::cout << (binary ? 1 : 0) << std::endl;
return 0;
}
Q6: Final Test of Intelligence
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int arr[n];
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
int ascending = 1;
for (int i = 0; i < n - 1; i++) {
if (arr[i] > arr[i + 1]) {
ascending = 0;
break;
}
}
cout << ascending << endl;
return 0;
}
Q1: Broken Messages
string1 = input()
string2 = input()
output_string = string1 + " " + string2
print(output_string)
Q2: Sum of Data
n = input()
total_sum = 0
num = 0
for char in input():
if (char != " "):
num = num * 10 + int(char)
else:
total_sum += num
num = 0
total_sum += num
print(total_sum)
Q3: Bigger in Reverse
num = int(input())
reversed_num = int(str(num)[::-1])
if reversed_num > num:
print(1)
else:
print(0)
Q4: Rotational Data Error
original = input()
corrected = ''
for char in original:
if char == '9':
corrected += '0'
else:
corrected += char
print(corrected)
Q5: Better in Binary
communication = input()
if all(k in '01' for k in communication):
print(1)
else:
print(0)
Q6: Final Test of Intelligence
n = int(input())
arr = list(map(int, input().split()))
ascending = 1
for i in range(n - 1):
if arr[i] > arr[i + 1]:
ascending = 0
break
print(ascending)
Q1: Broken Messages
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String string1 = scanner.nextLine();
String string2 = scanner.nextLine();
String outputString = string1 + " " + string2;
System.out.println(outputString);
scanner.close();
}
}
Q2: Sum of Data
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int sum = 0;
for (int i = 0; i < n; i++) {
sum += scanner.nextInt();
}
System.out.println(sum);
scanner.close();
}
}
Q3: Bigger in Reverse
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
int originalNum = num;
int reversedNum = 0;
while (num != 0) {
reversedNum = reversedNum * 10 + num % 10;
num /= 10;
}
if (reversedNum > originalNum) {
System.out.println(1);
} else {
System.out.println(0);
}
scanner.close();
}
}
Q4: Rotational Data Error
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String data = scanner.nextLine();
StringBuilder result = new StringBuilder();
for (char c : data.toCharArray()) {
if (c == '9') {
result.append('0');
} else {
result.append(c);
}
}
System.out.println(result.toString());
scanner.close();
}
}
Q5: Better in Binary
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String message = scanner.next();
scanner.close();
boolean binary = true;
for (char k : message.toCharArray()) {
if (k != '0' && k != '1') {
binary = false;
break;
}
}
System.out.println(binary ? 1 : 0);
}
}
Q6: Final Test of Intelligence
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] array = new int[n];
for (int i = 0; i < n; i++) {
array[i] = scanner.nextInt();
}
boolean ascending = true;
for (int i = 1; i < n; i++) {
if (array[i] < array[i - 1]) {
ascending = false;
break;
}
}
System.out.println(ascending ? 1 : 0);
}
}
Q1: Colour Scheme
#include <stdio.h>
#include <string.h>
int main() {
char colour1[10], colour2[10];
scanf("%s", colour1);
scanf("%s", colour2);
if ((strcmp(colour1, "Red") == 0 && strcmp(colour2, "White") == 0) ||
(strcmp(colour1, "White") == 0 && strcmp(colour2, "Red") == 0)) {
printf("Orange\n");
} else if ((strcmp(colour1, "Red") == 0 && strcmp(colour2, "Orange") == 0) ||
(strcmp(colour1, "Orange") == 0 && strcmp(colour2, "Red") == 0)) {
printf("White\n");
} else {
printf("Red\n");
}
return 0;
}
Q2: Elite Gaming
#include <stdio.h>
int main() {
char s[101];
scanf("%100s", s);
for (int i = 0; s[i + 1] != '\0'; i++) {
if (s[i] == s[i + 1]) {
printf("BAD\n");
return 0;
}
}
printf("GOOD\n");
return 0;
}
Q3: Gradees
#include <stdio.h>
int main() {
int grade;
scanf("%d", &grade);
if (grade >= 80 && grade <= 100) {
printf("A\n");
} else if (grade >= 70 && grade <= 79) {
printf("B\n");
} else if (grade >= 60 && grade <= 69) {
printf("C\n");
} else if (grade >= 50 && grade <= 59) {
printf("D\n");
} else {
printf("F\n");
}
return 0;
}
Q4: Rectangles
#include <stdio.h>
int main() {
int N, length, width;
scanf("%d", &N);
for (int i = 0; i < N; i++) {
scanf("%d %d", &length, &width);
printf("%d\n", length * width);
}
return 0;
}
Q5: Anagrams
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int compare(const void *a, const void *b) {
return (*(char *)a - *(char *)b);
}
int main() {
char word1[11], word2[11];
scanf("%s", word1);
scanf("%s", word2);
if (strlen(word1) != strlen(word2)) {
printf("no\n");
return 0;
}
qsort(word1, strlen(word1), sizeof(char), compare);
qsort(word2, strlen(word2), sizeof(char), compare);
if (strcmp(word1, word2) == 0) {
printf("yes\n");
} else {
printf("no\n");
}
return 0;
}
Q6: Averages
#include <stdio.h>
int main() {
int num_of_classes;
scanf("%d", &num_of_classes);
int grades[num_of_classes];
int sum = 0;
for (int i = 0; i < num_of_classes; i++) {
scanf("%d", &grades[i]);
sum += grades[i];
}
double average = (double)sum / num_of_classes;
for (int i = 0; i < num_of_classes; i++) {
if (grades[i] > average) {
printf("higher\n");
} else if (grades[i] < average) {
printf("lower\n");
} else {
printf("equal\n");
}
}
return 0;
}
Q7: Class Time
#include <stdio.h>
int main() {
int curr_h, curr_m, end_h, end_m;
scanf("%d:%d", &curr_h, &curr_m);
scanf("%d:%d", &end_h, &end_m);
int curr_time = curr_h * 60 + curr_m;
int end_time = end_h * 60 + end_m;
if (end_time <= curr_time) {
end_time += 24 * 60;
}
printf("%d\n", end_time - curr_time);
return 0;
}
Q1: Colour Scheme
#include <iostream>
#include <set>
int main() {
std::set<std::string> colours = {"Red", "Orange", "White"};
std::string colour1, colour2;
std::cin >> colour1 >> colour2;
for (const std::string& colour : colours) {
if (colour != colour1 && colour != colour2) {
std::cout << colour << std::endl;
break;
}
}
return 0;
}
Q2: Elite Gaming
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
cin >> s;
for (int i = 0; i < s.size() - 1; i++) {
if (s[i] == s[i + 1]) {
cout << "BAD" << endl;
return 0;
}
}
cout << "GOOD" << endl;
return 0;
}
Q3: Gradees
#include <iostream>
int main() {
int grade;
std::cin >> grade;
if (grade >= 80 && grade <= 100) {
std::cout << "A\n";
} else if (grade >= 70 && grade <= 79) {
std::cout << "B\n";
} else if (grade >= 60 && grade <= 69) {
std::cout << "C\n";
} else if (grade >= 50 && grade <= 59) {
std::cout << "D\n";
} else {
std::cout << "F\n";
}
return 0;
}
Q4: Rectangles
#include <iostream>
int main() {
int N, length, width;
std::cin >> N;
for (int i = 0; i < N; i++) {
std::cin >> length >> width;
std::cout << (length * width) << std::endl;
}
return 0;
}
Q5: Anagrams
#include <iostream>
#include <algorithm>
int main() {
std::string word1, word2;
std::cin >> word1 >> word2;
if (word1.length() != word2.length()) {
std::cout << "no\n";
return 0;
}
std::sort(word1.begin(), word1.end());
std::sort(word2.begin(), word2.end());
if (word1 == word2) {
std::cout << "yes\n";
} else {
std::cout << "no\n";
}
return 0;
}
Q6: Averages
#include <iostream>
#include <vector>
using namespace std;
int main() {
int num_of_classes;
cin >> num_of_classes;
vector<int> grades(num_of_classes);
int sum = 0;
for (int i = 0; i < num_of_classes; i++) {
cin >> grades[i];
sum += grades[i];
}
double average = static_cast<double>(sum) / num_of_classes;
for (int grade : grades) {
if (grade > average) {
cout << "higher" << endl;
} else if (grade < average) {
cout << "lower" << endl;
} else {
cout << "equal" << endl;
}
}
return 0;
}
Q7: Class Time
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int curr_h, curr_m, end_h, end_m;
char colon;
cin >> curr_h >> colon >> curr_m;
cin >> end_h >> colon >> end_m;
int curr_time = curr_h * 60 + curr_m;
int end_time = end_h * 60 + end_m;
if (end_time <= curr_time) {
end_time += 24 * 60;
}
cout << (end_time - curr_time) << endl;
return 0;
}
Q1: Colour Scheme
locolours = {"Red", "Orange", "White"}
colour1 = input()
colour2 = input()
print((locolours - {colour1, colour2}).pop())
Q2: Elite Gaming
s = input()
for i in range(len(s) - 1):
if s[i] == s[i + 1]:
print("BAD")
break
else:
print("GOOD")
Q3: Gradees
#include <iostream>
grade = int(input())
if 80 <= grade <= 100:
print("A")
elif 70 <= grade <= 79:
print("B")
elif 60 <= grade <= 69:
print("C")
elif 50 <= grade <= 59:
print("D")
else:
print("F")
Q4: Rectangles
#include <iostream>
N = int(input())
for i in range(N):
length = int(input())
width = int(input())
print(length * width)
Q5: Anagrams
word1 = input()
word2 = input()
if sorted(word1) == sorted(word2):
print("yes")
else:
print("no")
Q6: Averages
num_of_classes = int(input())
grades = list(map(int, input().split()))
average = sum(grades) / num_of_classes
for grade in grades:
if grade > average:
print("higher")
elif grade < average:
print("lower")
else:
print("equal")
Q7: Class Time
curr_time = input()
end_time = input()
curr_h, curr_m = map(int, curr_time.split(":"))
end_h, end_m = map(int, end_time.split(":"))
curr_time = curr_h * 60 + curr_m
end_time = end_h * 60 + end_m
if end_time <= curr_time:
end_time += 24 * 60
print(end_time - curr_time)
Q1: Colour Scheme
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String colour1 = scanner.nextLine();
String colour2 = scanner.nextLine();
if (!colour1.equals("Red") && !colour2.equals("Red")) {
System.out.println("Red");
} else if (!colour1.equals("Orange") && !colour2.equals("Orange")) {
System.out.println("Orange");
} else {
System.out.println("White");
}
scanner.close();
}
}
Q2: Elite Gaming
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.next();
scanner.close();
for (int i = 0; i < s.length() - 1; i++) {
if (s.charAt(i) == s.charAt(i + 1)) {
System.out.println("BAD");
return;
}
}
System.out.println("GOOD");
}
}
Q3: Gradees
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int grade = scanner.nextInt();
scanner.close();
if (grade >= 80 && grade <= 100) {
System.out.println("A");
} else if (grade >= 70 && grade <= 79) {
System.out.println("B");
} else if (grade >= 60 && grade <= 69) {
System.out.println("C");
} else if (grade >= 50 && grade <= 59) {
System.out.println("D");
} else {
System.out.println("F");
}
}
}
Q4: Rectangles
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
for (int i = 0; i < N; i++) {
int length = scanner.nextInt();
int width = scanner.nextInt();
System.out.println(length * width);
}
scanner.close();
}
}
Q5: Anagrams
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String word1 = scanner.next();
String word2 = scanner.next();
scanner.close();
if (word1.length() != word2.length()) {
System.out.println("no");
return;
}
char[] arr1 = word1.toCharArray();
char[] arr2 = word2.toCharArray();
Arrays.sort(arr1);
Arrays.sort(arr2);
if (Arrays.equals(arr1, arr2)) {
System.out.println("yes");
} else {
System.out.println("no");
}
}
}
Q6: Averages
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int numOfClasses = scanner.nextInt();
int[] grades = new int[numOfClasses];
int sum = 0;
for (int i = 0; i < numOfClasses; i++) {
grades[i] = scanner.nextInt();
sum += grades[i];
}
double average = (double) sum / numOfClasses;
for (int grade : grades) {
if (grade > average) {
System.out.println("higher");
} else if (grade < average) {
System.out.println("lower");
} else {
System.out.println("equal");
}
}
scanner.close();
}
}
Q7: Class Time
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] currTime = scanner.next().split(":");
String[] endTime = scanner.next().split(":");
int currH = Integer.parseInt(currTime[0]);
int currM = Integer.parseInt(currTime[1]);
int endH = Integer.parseInt(endTime[0]);
int endM = Integer.parseInt(endTime[1]);
int startTime = currH * 60 + currM;
int endTime2 = endH * 60 + endM;
if (endTime2 <= startTime) {
endTime2 += 24 * 60;
}
System.out.println(endTime2 - startTime);
scanner.close();
}
}
Q1: Reversal
#include <stdio.h>
#include <string.h>
void reverse(char *s, int left, int right) {
if (left >= right) return;
char temp = s[left];
s[left] = s[right];
s[right] = temp;
reverse(s, left + 1, right - 1);
}
int main() {
char s[101];
scanf("%100s", s);
int length = strlen(s);
reverse(s, 0, length - 1);
printf("%s\n", s);
return 0;
}
Q2: Prime Bag
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#ifdef __GNUC__
typedef __int128 int128;
#endif
static inline long long mul_mod(long long a, long long b, long long mod) {
int128 t = a;
t *= b;
t %= mod;
return (long long)t;
}
int main(void) {
int P;
if (scanf("%d", &P) != 1) return 1;
long long p = P;
long long mod = p * p;
int m = (5 * P + 16) / 17;
int K = P - m;
long long sum_inv = 0;
if (K > 0) {
long long *inv = (long long *) malloc((K + 1) * sizeof(long long));
if (!inv) return 1;
inv[1] = 1;
for (int i = 2; i <= K; i++) {
int r = mod % i;
long long d = mod / i;
inv[i] = (mod - mul_mod(d, inv[r], mod)) % mod;
}
for (int i = 1; i <= K; i++) {
if (i & 1)
sum_inv = (sum_inv + inv[i]) % mod;
else
sum_inv = (sum_inv + mod - inv[i]) % mod;
}
free(inv);
}
long long ans = (1 + p * sum_inv) % mod;
printf("%lld\n", ans);
return 0;
}
Q3: Queens on a Chessboard
#include <stdio.h>
char board[8][9];
int fullCol[8];
int fullDiag1[15];
int fullDiag2[15];
int solutionCount = 0;
void queens(int row) {
if (row == 8) {
solutionCount++;
return;
}
for (int col = 0; col < 8; col++) {
if (board[row][col] == '*') continue;
if (fullCol[col] || fullDiag1[row - col + 7] || fullDiag2[row + col]) continue;
fullCol[col] = 1;
fullDiag1[row - col + 7] = 1;
fullDiag2[row + col] = 1;
queens(row + 1);
fullCol[col] = 0;
fullDiag1[row - col + 7] = 0;
fullDiag2[row + col] = 0;
}
}
int main() {
for (int i = 0; i < 8; i++) {
scanf("%s", board[i]);
}
queens(0);
printf("%d\n", solutionCount);
return 0;
}
Q4: Knapsack
#include <stdio.h>
int main() {
int N, M;
scanf("%d %d", &N, &M);
int items[1000];
for (int i = 0; i < M; i++) {
scanf("%d", &items[i]);
}
int achievable[1001] = {0};
achievable[0] = 1;
for (int i = 0; i < M; i++) {
int weight = items[i];
for (int j = N; j >= weight; j--) {
if (achievable[j - weight]) {
achievable[j] = 1;
}
}
}
for (int i = N; i >= 0; i--) {
if (achievable[i]) {
printf("%d\n", i);
break;
}
}
return 0;
}
Q5: Find the Number
#include <stdio.h>
#include <string.h>
void calc(long long l, long long u) {
if (u - l <= 1) {
printf("! %lld\n", l);
fflush(stdout);
return;
}
long long val = (l + u) / 2;
printf("? %lld\n", val);
fflush(stdout);
char reply[10];
scanf("%s", reply);
if (strcmp(reply, "<=") == 0) {
calc(val, u);
} else {
calc(l, val);
}
}
int main() {
long long lower = 1;
long long upper = 1000000000;
calc(lower, upper);
return 0;
}
Q1: Reversal
#include <iostream>
#include <string>
using namespace std;
void reverse(string &s, int left, int right) {
if (left >= right) return;
swap(s[left], s[right]);
reverse(s, left + 1, right - 1);
}
int main() {
string s;
cin >> s;
reverse(s, 0, s.length() - 1);
cout << s << endl;
return 0;
}
Q2: Prime Bag
#include <iostream>
#include <vector>
using namespace std;
typedef __int128 int128;
using ll = long long;
ll mul_mod(ll a, ll b, ll mod) {
int128 t = a;
t *= b;
t %= mod;
return (ll)t;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int P;
cin >> P;
ll p = P;
ll mod = p * p;
int m = (5LL * P + 16) / 17;
int K = P - m;
ll sum_inv = 0;
if (K > 0) {
vector<ll> inv(K + 1, 0);
inv[1] = 1;
for (int i = 2; i <= K; i++) {
int r = int(mod % i);
ll d = mod / i;
inv[i] = (mod - mul_mod(d, inv[r], mod)) % mod;
}
for (int i = 1; i <= K; i++) {
if (i & 1) {
sum_inv = (sum_inv + inv[i]) % mod;
} else {
sum_inv = (sum_inv + mod - inv[i]) % mod;
}
}
}
ll ans = (1 + p * sum_inv) % mod;
cout << ans << "\n";
return 0;
}
Q3: Queens on a Chessboard
#include <iostream>
#include <vector>
#include <string>
#include <unordered_set>
using namespace std;
int solutionCount = 0;
void queens(int row, vector<string>& board, vector<bool>& fullCol,
vector<bool>& fullDiag1, vector<bool>& fullDiag2) {
if (row == 8) {
solutionCount++;
return;
}
for (int col = 0; col < 8; col++) {
if (board[row][col] == '*') continue;
if (fullCol[col] || fullDiag1[row - col + 7] || fullDiag2[row + col]) continue;
fullCol[col] = true;
fullDiag1[row - col + 7] = true;
fullDiag2[row + col] = true;
queens(row + 1, board, fullCol, fullDiag1, fullDiag2);
fullCol[col] = false;
fullDiag1[row - col + 7] = false;
fullDiag2[row + col] = false;
}
}
int main() {
vector<string> board(8);
for (int i = 0; i < 8; i++) {
cin >> board[i];
}
vector<bool> fullCol(8, false);
vector<bool> fullDiag1(15, false);
vector<bool> fullDiag2(15, false);
queens(0, board, fullCol, fullDiag1, fullDiag2);
cout << solutionCount << endl;
return 0;
}
Q4: Knapsack
#include <iostream>
#include <vector>
using namespace std;
int main() {
int N, M;
cin >> N >> M;
vector<int> items(M);
for (int i = 0; i < M; ++i) {
cin >> items[i];
}
vector<int> achievable(N + 1, 0);
achievable[0] = 1;
for (int i = 0; i < M; ++i) {
int weight = items[i];
for (int j = N; j >= weight; --j) {
if (achievable[j - weight]) {
achievable[j] = 1;
}
}
}
for (int i = N; i >= 0; --i) {
if (achievable[i]) {
cout << i << endl;
break;
}
}
return 0;
}
Q5: Find the Number
#include <iostream>
#include <string>
using namespace std;
void calc(long long l, long long u) {
if (u - l <= 1) {
cout << "! " << l << endl;
cout.flush();
return;
}
long long val = (l + u) / 2;
cout << "? " << val << endl;
cout.flush();
string reply;
cin >> reply;
if (reply == "<=") {
calc(val, u);
} else {
calc(l, val);
}
}
int main() {
long long lower = 1;
long long upper = 1000000000;
calc(lower, upper);
return 0;
}
Q1: Reversal
def reverse(s):
if len(s) == 0:
return ""
return s[-1] + reverse(s[:-1])
s = input()
print(reverse(s))
Q2: Prime Bag
import math
def solve(P):
min_balls_for_beryl = math.ceil(5 * P / 17)
max_balls_for_alphonse = P - min_balls_for_beryl
total_ways = 1 # C(P, 0) is always 1
binomial_coefficient = 1
for k in range(1, max_balls_for_alphonse + 1):
binomial_coefficient = binomial_coefficient * (P - k + 1) // k
total_ways += binomial_coefficient
return total_ways % (P * P)
P = int(input())
print(solve(P))
Q3: Queens on a Chessboard
def is_valid(board, row, col, cols, diag1, diag2):
if col in cols or (row - col) in diag1 or (row + col) in diag2:
return False
if board[row][col] == '*':
return False
return True
def place_queens(board, row, cols, diag1, diag2, count):
if row == 8:
count[0] += 1
return
for col in range(8):
if is_valid(board, row, col, cols, diag1, diag2):
cols.add(col)
diag1.add(row - col)
diag2.add(row + col)
place_queens(board, row + 1, cols, diag1, diag2, count)
cols.remove(col)
diag1.remove(row - col)
diag2.remove(row + col)
def solve(board):
cols = set()
diag1 = set()
diag2 = set()
count = [0]
place_queens(board, 0, cols, diag1, diag2, count)
return count[0]
board = [input().strip() for _ in range(8)]
print(solve(board))
Q4: Knapsack
N, M = map(int, input().split())
items = list(map(int, input().split()))
achievable = [False] * (N + 1)
achievable[0] = True
for weight in items:
for i in range(N, weight - 1, -1):
if achievable[i - weight]:
achievable[i] = True
for i in range(N, -1, -1):
if achievable[i]:
print(i)
break
Q5: Find the Number
lower = 1
upper = 10**9
def calc(l, u):
if u - l <= 1:
print(f"! {l}", flush=True)
return
val = (l + u) // 2
print(f"? {val}", flush=True)
reply = input()
if reply == "<=":
calc(val, u)
else:
calc(l, val)
calc(lower, upper)
Q1: Reversal
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.next();
scanner.close();
System.out.println(reverse(s));
}
private static String reverse(String s) {
if (s.isEmpty()) return "";
return s.charAt(s.length() - 1) + reverse(s.substring(0, s.length() - 1));
}
}
Q2: Prime Bag
import java.util.Scanner;
public class Main {
static long modMul(long a, long b, long mod) {
a %= mod;
b %= mod;
long result = 0;
while (b > 0) {
if ((b & 1) == 1) {
result += a;
if (result >= mod) result -= mod;
}
a <<= 1;
if (a >= mod) a -= mod;
b >>= 1;
}
return result;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int P = sc.nextInt();
long p = P;
long mod = p * p;
int m = (int)((5L * P + 16) / 17);
int K = P - m;
long sumInv = 0;
if (K > 0) {
long[] inv = new long[K + 1];
inv[1] = 1;
for (int i = 2; i <= K; i++) {
long r = mod % i;
long d = mod / i;
inv[i] = (mod - modMul(d, inv[(int) r], mod)) % mod;
}
for (int i = 1; i <= K; i++) {
if ((i & 1) == 1) {
sumInv = (sumInv + inv[i]) % mod;
} else {
sumInv = (sumInv + mod - inv[i]) % mod;
}
}
}
long ans = (1 + modMul(p, sumInv, mod)) % mod;
System.out.println(ans);
sc.close();
}
}
Q3: Queens on a Chessboard
import java.util.Scanner;
public class Main {
static char[][] board = new char[8][8];
static boolean[] fullCol = new boolean[8];
static boolean[] fullDiag1 = new boolean[15];
static boolean[] fullDiag2 = new boolean[15];
static int solutionCount = 0;
public static void queens(int row) {
if (row == 8) {
solutionCount++;
return;
}
for (int col = 0; col < 8; col++) {
if (board[row][col] == '*') continue;
if (fullCol[col] || fullDiag1[row - col + 7] || fullDiag2[row + col]) continue;
fullCol[col] = true;
fullDiag1[row - col + 7] = true;
fullDiag2[row + col] = true;
queens(row + 1);
fullCol[col] = false;
fullDiag1[row - col + 7] = false;
fullDiag2[row + col] = false;
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < 8; i++) {
String line = scanner.nextLine();
board[i] = line.toCharArray();
}
queens(0);
System.out.println(solutionCount);
scanner.close();
}
}
Q4: Knapsack
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int M = scanner.nextInt();
int[] items = new int[M];
for (int i = 0; i < M; i++) {
items[i] = scanner.nextInt();
}
boolean[] achievable = new boolean[N + 1];
achievable[0] = true;
for (int i = 0; i < M; i++) {
int weight = items[i];
for (int j = N; j >= weight; j--) {
if (achievable[j - weight]) {
achievable[j] = true;
}
}
}
for (int i = N; i >= 0; i--) {
if (achievable[i]) {
System.out.println(i);
break;
}
}
scanner.close();
}
}
Q5: Find the Number
import java.util.Scanner;
public class Main {
static Scanner scanner = new Scanner(System.in);
public static void calc(long l, long u) {
if (u - l <= 1) {
System.out.println("! " + l);
System.out.flush();
return;
}
long val = (l + u) / 2;
System.out.println("? " + val);
System.out.flush();
String reply = scanner.next();
if (reply.equals("<=")) {
calc(val, u);
} else {
calc(l, val);
}
}
public static void main(String[] args) {
long lower = 1;
long upper = 1_000_000_000;
calc(lower, upper);
}
}