質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

1137閲覧

[至急] Project Euler: #20 Factorial digit sum コード、入力、出力、解説 アルゴリズムとデータ構造 #13 - #19を教えて!gooで解答せよ。

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2022/09/23 18:06

#13 - #19を教えて!gooで解答せよ。
https://oshiete.goo.ne.jp/articles/qa/2834
https://web.archive.org/web/20220923175516/https://oshiete.goo.ne.jp/articles/qa/2834


https://projecteuler.net/problem=20

n! means n × (n − 1) × ... × 3 × 2 × 1

For example, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800,
and the sum of the digits in the number 10! is 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27.

Find the sum of the digits in the number 100!

結論からお伝えすると、答えを教えてください。C,C++,javaのどれかで。
コードと入力と出力とできれば解説もお願いします。
プログラミング未経験でも簡単に理解できるように説明してほしい。

私の考え
オーバーフローが発生する。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thkana

2022/09/23 22:54

> 教えて!gooで マルチポストの理由を記載してください。(するわけないと思いながら言っているけれど) > 解答せよ。 何様でしょう?
episteme

2022/09/24 02:19 編集

答えは 648 か。(検算にお使いください) > オーバーフローが発生する。 オーバーフローしない(多桁の)掛け算ルーチンを書けばいいんでしょ。 そんなに難しくないでしょ。筆算でのアルゴリズムをコードに落とせばいいんだから。
退会済みユーザー

退会済みユーザー

2022/09/24 05:02

@thkana これはマルチポストではない。 私は#13 - #19を教えて!gooのみに投稿した。 @episteme Cなどはチューリング完全でありながら、そのルーチンを記述することが非常に難しい設計となっている。
episteme

2022/09/24 08:07

> Cなどはチューリング完全でありながら、そのルーチンを記述することが非常に難しい設計となっている。 ...だからなに?
退会済みユーザー

退会済みユーザー

2022/09/24 11:01

よって、そのルーチンを記述することが非常に難しい設計となっている。 故に、私はこの問題を解答できない。
kazuma-s

2022/09/24 15:07

100の階乗は 10進で 158桁です。main の中は 5行で書けます。
退会済みユーザー

退会済みユーザー

2022/09/24 15:21

私はオーバーフローが発生する。 よって、この問題はチューリング不完全なコンピュータでは解けない。
kazuma-s

2022/09/24 16:24

そのオーバーフローが発生するコードを質問に追記してください。
退会済みユーザー

退会済みユーザー

2022/09/24 16:50

long long n = 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*82*83*84*85*86*87*88*89*90*91*92*93*94*95*96*97*98*99*100;
退会済みユーザー

退会済みユーザー

2022/09/24 18:28

返信が遅すぎる。
kazuma-s

2022/09/25 01:02

int a[160] = { 1 }, c = 0, n, i; for (n = 2; n <= 100; n++)   for (i = 0; i < 160; i++)     a[i] = a[i] * n + c, c = a[i] / 10, a[i] %= 10;
guest

回答3

0

残念ながら、ここではコードの作成依頼は受け付けていません

まずはあなたなりにコードを書いてみましょう。その上でわからないことを聞いていただければお答えできるかと思います。

投稿2022/09/23 22:22

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

退会済みになっているから、解答を書いてももう見ないでしょう。
Java で BigInteger を使えば、100 の階乗でもオーバーフローしません。

Java

1import java.math.BigInteger; 2 3class Main { 4 public static void main(String[] args) { 5 BigInteger ONE = BigInteger.ONE, f = ONE, n; 6 for (n = new BigInteger("100"); !n.equals(ONE); n = n.subtract(ONE)) 7 f = f.multiply(n); 8 String s = f.toString(); 9 int a = 0; 10 for (int i = s.length(); --i >= 0; ) a += s.charAt(i) - '0'; 11 System.out.println(a); 12 } 13}

投稿2022/09/26 03:16

kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

https://oshiete.goo.ne.jp/articles/qa/2834 解答してくれるならば、私は喜ぶ。


なお、このコメントは私が私の友達に質問し手に入れたコメントである。

投稿2022/09/24 20:45

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問