C++
 Computer >> コンピューター >  >> プログラミング >> C++

複数の大きな数を合計するC++プログラム

問題の概要

いくつかの大きな数が格納された配列 nums が与えられます。これらの数値は非常に大きく、通常の int 型では扱いきれない可能性があります。この記事では、これらの数値の合計を正確に求める方法を解説します。

例えば、入力が nums = [5000000003, 3000000005, 8000000007, 2000000009, 7000000011] の場合、出力は 25000000035 となります。

解決の手順

  • 変数 x を 0 で初期化します
  • i を 0 から配列 nums のサイズ未満まで1ずつ増やしながら、以下の処理を繰り返します
    • x に nums[i] を加算していきます
  • 最終的な x を結果として返します

ポイント:long long int 型を使う理由

個々の数値やその合計は、32ビット整数型(int)の最大値である 2,147,483,647 を簡単に超えてしまいます。そこで、約 ±9.2 × 1018 まで表現できる long long int 型を使用することで、オーバーフローを防ぎ、正確な合計値を得ることができます。

実装例

それでは、実際のコードを見てみましょう。

#include <iostream>
#include <vector>
using namespace std;

long long int solve(vector<long long int> nums){
    long long int x = 0;

    for(int i=0; i<nums.size(); i++){
        x = x + nums[i];
    }
    return x;
}

int main(){
    vector<long long int> nums = {5000000003, 3000000005, 8000000007, 2000000009, 7000000011};
    cout << solve(nums);
}

入力

{5000000003, 3000000005, 8000000007, 2000000009, 7000000011}

出力

25000000035

まとめ

大きな数を扱う際には、適切なデータ型の選択が非常に重要です。long long int 型を使用すれば、オーバーフローを気にせずに複数の大きな数の合計を計算できます。また、このアルゴリズムの計算量は配列の要素数 n に対して O(n) であり、非常に効率的です。同様のアプローチは、金額の集計や大量のID管理など、実務でも幅広く応用できます。

  1. C++で2つの2進数文字列を加算するプログラムの書き方

    2つの2進数を表す文字列が与えられたとき、それらを加算した結果を求め、その結果を2進数の文字列として返すことを考えます。2進数とは、0か1のいずれかで表現される数値のことです。2進数同士を足し合わせる際には、以下のような2進数特有の加算ルールに従う必要があります。0+0 → 0 0+1 → 1 1+0 → 1 1+1 → 0(繰り上がり1)入力例str1 = {11}, str2 = {1}出力例100入力例str1 = {110}, str2 = {1}出力例111問題を解くためのアプローチ両方の文字列を末尾(最下位桁)から走査する対応する桁の2進数同士を加算する1と1を足した場合は、その桁

  2. C++で2つの数値を加算するプログラムの書き方【サンプルコード付き】

    加算(足し算)は、最も基本的な算術演算の一つです。2つの数値を加算するプログラムは、指定された2つの数値の合計を計算し、その結果を画面に表示します。この記事では、C++で2つの数値を加算する方法を、変数を使った基本例と配列を使った応用例の2パターンに分けて解説します。例1:変数を使って2つの数値を加算するまずは、最もシンプルな方法です。2つの整数型変数を用意し、その合計を別の変数に格納して出力します。#include <iostream> using namespace std; int main() { int num1 = 15, num2 = 10, sum;