From 6db258f59fcb267e3f146df7cbeab2da7c3b6cf7 Mon Sep 17 00:00:00 2001 From: Stephen Seo Date: Tue, 16 Apr 2024 18:42:16 +0900 Subject: [PATCH] Fix invalid-too-large numbers being generated --- Makefile | 2 +- src/main.cpp | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 977a5d0..c176d86 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ COMMON_CXXFLAGS = -Wall -Wextra -Wpedantic -std=c++20 ifdef DEBUG - CXXFLAGS = -O0 -g ${COMMON_CXXFLAGS} + CXXFLAGS = -Og -g ${COMMON_CXXFLAGS} else CXXFLAGS = -O3 ${COMMON_CXXFLAGS} endif diff --git a/src/main.cpp b/src/main.cpp index fec0c4c..5969b3d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -403,8 +403,19 @@ int main(int argc, char **argv) { { std::default_random_engine r_eng(std::chrono::steady_clock::now().time_since_epoch().count()); if(!isAlt && randomizeDigits) { - std::uniform_int_distribution d_dist(1, digits); - digits = d_dist(r_eng); + unsigned int min_digits = 0; + for (unsigned long long min_copy = min; min_copy > 0; min_copy /= 10) { + ++min_digits; + } + if (min_digits == 0) { + min_digits = 1; + } + if (min_digits < digits) { + std::uniform_int_distribution d_dist(min_digits, digits); + digits = d_dist(r_eng); + } else { + digits = min_digits; + } } std::uniform_int_distribution r_dist( min,