C ++) как отличить аликвоту числа 1.0E + 1000? - PullRequest
0 голосов
/ 26 апреля 2020

Если ввод A < 10^1000 , b = common int <100000

, как я могу узнать, что A кратно B или нет?

int main()
{

    int testcase = 0;

    cin >> testcase;

    for (int i = 0; i < testcase; i++)
    {
        long long num;
        int div = 0;

        cin >> num >> div;

        if (num % div == 0)
        {
            cout << 1 << endl;
        }
        else
        {
            cout << 0 << endl;
        }
    }

    return 0;
}

это то, что я пытался.

1 Ответ

0 голосов
/ 26 апреля 2020

Первым шагом является чтение (или установка) большого числа в виде строки.

Второй шаг заключается в преобразовании этой строки в вектор типа int, каждый из которых меньше 10000.

Последний шаг - вычисление a modulo b, таким же образом мы выполняем деление вручную

    #include    <iostream>
    #include    <string>
    #include    <vector>
    #include    <algorithm>
    #include    <cmath>

std::vector<int> conver_to_vect_int (const std::string &a) {
    std::vector<int> x;
    int n = a.size();
    x.reserve (n/5 + 1);
    for (int i  = 0; i < n; i += 5) {
        int max = std::min (i+5, n);
        std::string s (a.begin() + i, a.begin() + max);
        int number = std::stoi (s);
        x.push_back (number);
    }
    return x;
}

int modulo (const std::string &a_string, int b) {
    std::vector<int> a = conver_to_vect_int (a_string);
    int mod = 0;
    for (int val: a) {
        int val_with_mod = mod * 100000 + val;
        mod = val_with_mod % b;
    }
    return mod;
}

int main() {
    std::vector<std::string>  list_s = {"29", "111111111", "111111111111111111111111111111111111", "111111111111111211111111111111111111"};
    int b = 9;
    for (auto &s: list_s) {
        int mod = modulo (s, b);
        bool divisibility = mod == 0;
        std::cout << "divisibility of " << s << " by " << b << " = " << divisibility << "\n";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...