Hỏi cách chuyển xâu sang số

Cho e hỏi cách chuyển đổi từ xâu sang số ạ!

Đề là cho 2 số sao input lại có đến 3 số vậy :v

1 Like

À e quên,cái số đầu tiên là số lượng bộ test

10^250… Cái số to vãi linh hồn này thì phải dùng bigInteger để xử lý nó. Bác tham khảo link full hd không che sau:
https://codeforces.com/blog/entry/16380
Khi đã biểu diễn được số siêu to khổng lồ đó và có các phương thức tính toán với nó thì việc tìm ước chung thực hiện như bình thường nha bác.

1 Like

Còn tuỳ vào ngôn ngữ bạn sử dụng nữa.

3 Likes

Bài này nhẹ nhàng vì a vẫn không quá 64 bit :smiley: b lấy cơ số 10^6 là được.

3 Likes

Bài này phân tích một chút sẽ ra vầy:

UCLN(a, b) = UCLN(a, b%a)

a là số nhỏ rồi, nên chỉ cần tính b%a là xong.
Nhận xét thêm một chút: (10x+y)%n = (10x%n + y%n)%n, nên có thể đọc b lần lượt từng ký tự để tính b%a

4 Likes

em thử #include <boost/multiprecision/cpp_int.hpp> xem có được ko

c++ users can use <boost/multiprecision/cpp_int.hpp>
spoj supports it

bài này ở spoj https://www.spoj.com/PTIT/problems/CPPLCM04/ xài cpp_int vô tư thôi em

em có thể ăn gian xài luôn gcd của boost :V

#include <iostream>
#include <boost/multiprecision/cpp_int.hpp>
#include <boost/math/common_factor.hpp>
using BigInt = boost::multiprecision::cpp_int;

int main() {
    int n;
    std::cin >> n;
    for (BigInt a, b; std::cin >> a >> b; )
        std::cout << boost::math::gcd(a, b) << "\n";
}
5 Likes

Cái thư viện này phải cài đặt riêng chứ không có sẵn trong IDE phải không bạn ?

đúng rồi. 1 số trình biên dịch có đi kèm sẵn Boost luôn, ví dụ https://nuwen.net/mingw.html

hoặc em vào https://www.boost.org/ down bản mới nhất về rồi làm theo “hướng dẫn”: https://www.boost.org/doc/libs/1_72_0/more/getting_started/windows.html là được :V

nếu em xài Linux gì thì cứ sudo apt install boost-devel

hoặc em xài MSVC 2015 trở lên thì xài vcpkg để quản lý các thư viện

nếu em ko xài MSVC thì cài msys2 mingw thay cho trình biên dịch em đang xài :V

ngoài ra còn có conan gì đó nữa

6 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?