تمرین جمع اعداد بزرگ در جاوا
در این نوشته تمرین “دنباله فیبوناچی به صورت برگشتی” که در وبسایت کوئرا موجود می باشد را برای شما کاربران عزیز حل کرده ایم.
در مورد سایت کوئرا بیشتر بخوانید…
سوال تمرین جمع اعداد بزرگ
در این سوال ما میخواهیم عمل جمع را برای اعدادی با تعداد ارقام بسیار زیاد(مثلا اعدادی ۱۰۰ رقمی) انجام دهیم.
همانطور که میدانید کامپیوتر نمیتواند اعداد با بیشتر از تقریباً ۱۵ رقم را ذخیره کند. پس راهکاری ابداع کنید که این جمعها را بتوانید انجام دهید.
ورودی تمرین جمع اعداد بزرگ
در ورودی به شما ابتدا تعداد اعدادی که باید جمع بزنید داده میشود(یعنی n) سپس در n سطر بعد در هر سطر یک عدد که تعداد ارقام آن کمتر از ۱۰۰ است.
1 ≤ n ≤ 20
خروجی تمرین جمع اعداد بزرگ
خروجی باید مجموع اعداد داده شده در ورودی باشد.
مثال تمرین جمع اعداد بزرگ
1 2 3 4 5 6 7 8 9 | Sample : ======================================== input : 3 111111111111111 22222222 2323 output : 111111133335656 |
حل تمرین جمع اعداد بزرگ جاوا
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | import java.util.Scanner; // Amir Shokri // amirshnll.ir // amirsh.nll@gmail.com class Main { static Scanner sc; static String strInput; public static void main(String[]args) { sc = new Scanner(System.in); int n = Integer.parseInt(sc.nextLine()); if (n < 1 || n > 20) return; String[] inputNumbers = new String[n]; int max_len = 0; for (int i = 1; i <= n; i++) { inputNumbers[i-1] = sc.nextLine(); if(max_len < inputNumbers[i-1].length()) max_len = inputNumbers[i-1].length(); } String[][] myNumbers = new String[n][max_len]; int j = 0; for (int i = 1; i <= n; i++) { for (j = 0; j < max_len; j++) { myNumbers[i-1][j] = "0"; } } int temp_len = 0; for (int i = 1; i <= n; i++) { temp_len = inputNumbers[i-1].length(); j = max_len - temp_len; for (char ch:inputNumbers[i-1].toCharArray()) { myNumbers[i-1][j] = String.valueOf(ch); j++; } } String sumNumbers = ""; int sum = 0; int borrow = 0; for(j = max_len - 1; j >= 0; j--) { for (int i = 1; i <= n; i++) { sum += Integer.parseInt(myNumbers[i-1][j]); } sum += borrow; borrow = 0; if(sum > 9) { borrow = sum / 10; sum = sum - (borrow * 10); } sumNumbers = String.valueOf(sum) + sumNumbers; sum = 0; } if(borrow!=0) { max_len++; System.out.print(String.valueOf(borrow)); } System.out.println(sumNumbers); } } |
روش حل تمرین جمع اعداد بزرگ جاوا
ابتدا خط اول ورودی را دریافت می کنیم تا بدانیم اعدادی که باید برای جمع استفاده شوند چند عدد است.
سپس این اعداد را تک تک دریافت می کنیم و در این حین بزرگترین عدد را هم از نظر طول مشخص می کنیم. (اندازه ی طول بزرگترین عدد نه خود آن عدد)
سپس در حلقه ای دیگر اعداد را تک تک رقم هایشان را جدا کرده و در یک متغیر دوبعدی میریزیم.
در آخر حلقه ای برای محاسبه عملیات جمع ایجاد می کنیم و از آخر اعداد را با هم رقم به رقم جمع می کنیم.
در این جمع یک متغیر borrow در نظر گرفته شده است که رقم نقلی هر ارزش مکانی به ارزش مکانی دیگر را نگه داری می کند.
در آخر هم مقدار جمع شده را در متغیر sumNumbers نگه داری می کنیم و نمایش می دهیم.
پایان.!
منبع سوال : وبسایت کوئرا
اگر روش حل بهتری دارید برای ما ارسال کنید تا با نام خودتان به اشتراک بگذاریم.
اگر سوال خاصی را مدنظر دارید در بخش نظرات برای ما ارسال کنید تا حل آن سوال را در الویت محتوای سایت بگذاریم.
موفق باشید.