Next Coding Contest Starts In:





Extra
Time

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);
    }
}