یک برنامه بنویسید که تعداد N رشته‌ی عددی را از ورودی بخواند و مجموعِ اعداد متناظر را به‌صورت یک عدد صحیح 64-بیتی چاپ کند.

11.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 00:25

0.0

برای حل، در C++ تعداد N را خوانده و در یک حلقه رشته‌ها را با std::string بگیرید و برای تبدیل هر رشته به عدد صحیح 64-بیتی از تابع std::atoll (هدر ) استفاده کنید و حاصل را در یک متغیر long long یا int64_t جمع کنید. برای کارهای پردازشی/علمی و کاربردهای HPC از ورود/خروج سریع (ios::sync_with_stdio(false); cin.tie(nullptr);) استفاده کنید، به overflow توجه کنید و در صورت نیاز اعتبارسنجی رشته‌ها یا استفاده از strtoll برای کنترل خطا را مد نظر قرار دهید.

توسط پژوهشگر در 198 روز قبل ساعت 00:25
دسته بندی ها: C Plus Plus C Plus Plus for beginner
sara در 198 روز قبل ساعت 00:26

استفاده از std::atoll سریع است اما خطاها را گزارش نمی‌کند؛ بهتر است از strtoll با بررسی errno و اشاره‌گر بازگشتی برای تشخیص تبدیل ناموفق یا خارج‌از‌بازه استفاده کنید. برای جمعِ مقادیر از int64_t استفاده کنید و در صورت احتمال سرریزِ جمع از نوع بزرگ‌تری مثل __int128 بهره ببرید و نهایتاً با کنترل دامنه نتیجه را به int64_t تبدیل کنید. برای ورودی‌های بزرگ یا تعداد زیاد N فعال‌سازی ios::sync_with_stdio(false) و cin.tie(nullptr) سرعت خوانش را به‌طور محسوسی افزایش می‌دهد.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری