/
DeC2018
/
0029
Обзор
Документация
Войти
/
DeC2018
/
0029
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
main.cpp
51 строка
1 KB
Den
create main.cpp
06 янв 2025, 02:11
06 янв 2025, 02:11
a66d4c7
Код
Авторство
О чём код?
#include <iostream> #include <climits> #include <cmath> class Solution { public: int divide(int dividend, int divisor) { // Handle overflow case if (dividend == INT_MIN && divisor == -1) return INT_MAX; // Determine the sign of the result const int sign = (dividend > 0) ^ (divisor > 0) ? -1 : 1; // Convert to long to handle overflow and take absolute values long long dvd = labs(dividend); long long dvs = labs(divisor); long long ans = 0; // Perform the division using bit manipulation while (dvd >= dvs) { long long temp = dvs, multiple = 1; while (dvd >= (temp << 1)) { temp <<= 1; multiple <<= 1; } dvd -= temp; ans += multiple; } return sign * ans; } }; int main() { Solution solution; // Example 1 int dividend1 = 10; int divisor1 = 3; int result1 = solution.divide(dividend1, divisor1); std::cout << "Example 1: " << result1 << std::endl; // Output: 3 // Example 2 int dividend2 = 7; int divisor2 = -3; int result2 = solution.divide(dividend2, divisor2); std::cout << "Example 2: " << result2 << std::endl; // Output: -2 return 0; }