O. Five in One – Codeforces Problem Solution in C++

Disclaimer: Make sure you tried enough before checking the solution

Problem: https://codeforces.com/group/MWSDmqGsZm/contest/223205/problem/O

#include <iostream>
#include <algorithm>
#include <iomanip>
#include <string>
#include <cmath>
using namespace std;
int countDivisor(int num)
{
    int m = num / 2;
    int counter = 0;
    for (int z = 1; z <= m; z++)
    {
        if (num % z == 0)
        {
            counter++;
        }
    }
    return counter;
}
bool palindrome(int num)
{ // 1551
    int temp = num;
    int sum = 0; // 150
    int d;
    while (num > 0)
    {                         // 1
        d = num % 10;         // 1
        sum = (sum * 10) + d; // 1
        num /= 10;            // num = num / 10;
    }
    if (temp == sum)
    {
        return true;
    }
    else
    {
        return false;
    }
}
int main()
{
    int size;
    cin >> size;
    int *arr = new int[size]; // 6 5 4 3
    // 0 1 2 3
    // 100 4 5 6
    for (int i = 0; i < size; i++)
    {
        cin >> arr[i];
    }
    sort(arr, arr + size);
    cout << "The maximum number : " << arr[size - 1] << endl;
    cout << "The minimum number : " << arr[0] << endl;
    int countPrime = 0;
    int countPalindrome = 0;
    for (int i = 0; i < size; i++)
    {
        if (palindrome(arr[i]))
        {
            countPalindrome++;
        }
        int m = arr[i] / 2; // 50
        int flag = 0;
        for (int z = 2; z <= m; z++)
        {
            if (arr[i] % z == 0)
            {
                flag = 1;
                break;
            }
        }
        if (flag == 0 && arr[i] != 1)
            countPrime++;
    }
    cout << "The number of prime numbers : " << countPrime << endl;
    cout << "The number of palindrome numbers : " << countPalindrome << endl;
    int c;
    int max;   // 4
    int index; // 3
    for (int i = 0; i < size; i++)
    {                             // i = 0, 1,2   // 1 2 5 8
        c = countDivisor(arr[i]); // 4
        if (i == 0)
        {
            max = c;
            index = i;
        }
        else
        {
            if (c >= max)
            {
                max = c;
                index = i;
            }
        }
    }
    cout << "The number that has the maximum number of divisors : " << arr[index] << endl;
}

Assiut University Training – Newcomers Solution Functions

Leave a Comment