No.2ベストアンサー
- 回答日時:
初歩的なアルゴリズムの学習ですね^^
まず、3桁の数字をabcと表すとその二乗は
(a*100 + b*10 +c)^2
=a*a*10000 + 2*a*b*1000 + (2*a*c + b*b)*100 + 2*b*c*10 + c*c
となります。
>3桁の整数で二乗すると下3桁がもとの数になるものをすべて求めなさい。
とのことなので、
(2*a*c + b*b)*100 + 2*b*c*10 + c*c
の部分だけを検討すれば良いことが判ります。
まずcについて式を検討すると、数式から下位一桁は
c*c mod 10 = c
とならなければならないので、cの数値は 0, 1, 5, 6 の4つしか無いことが判ります
またc=0については0になるのは自明なので計算する必要はありません。
次にbについて検討すると
(2*b*c*10 + c*c ) mod 100 = b*10 + c
とならなければなりません。cの値は4つですがc=0は式から、c=1,5,6のみ検討すれば良いことは自明です。またb=0については、c=0になるのが自明ですからこれも計算の必要がありません。
c=1の場合
(20*b + 1) mod 100 = b*10 + 1
2*b mod 10 = b
となり、bは存在しません。従って、最初のcのリストから1を削除します。
c=5の場合
(100*b + 25) mod 100 = b*10 + 5
(10*b + 2) mod 10 = b
b=2となります。
c=6の場合
(120*b + 36) mod 10 = b*10 + 6
12*b + 3 mod 10 = b
b=7となります。
すなわち、下位2桁は25と76のときのみ成立することが判ります。
最後にaを求めますが、a25とa76の18通りの組み合わせを計算すれば良いことになります。
ここから先は課題なので自分で考えてくださいね。
つまりアルゴリズムとしては、1桁めから数字の組み合わせの候補を絞っていけばよいといことです。
以上の考え方でプログラムを組んでみてください。
No.5
- 回答日時:
質問者ではありません
No.2さん
プログラムという便利なのを知っていると
私は
力任せにすぐ for文などでやろうとしていましたが
紹介されたアルゴリズムを読んで
目からうろこです
ありがとうございました
No.4
- 回答日時:
求める3桁の整数をxとし、それを画面に表示するだけだとします。
xを100から999まで動かして、xと2乗の下3桁を比較すればいいだけです。
for ( x=100; x<1000; x++ )
if ( x == xの2乗の下3桁 )
printf( "x=%d (2乗は%7d)\n", x, x*x );
※半角スペースでは全部左詰めになっちゃったため、全角スペースを使っています。
上をコピーして貼り付けても、エラーになりますよ。
でいいのではないでしょうか?
xの2乗の下3桁は、ものすごぉ~く簡単に求められます。
課題の内容からすると、この部分を考えさせるためだと思いますので、答えは控えます。
「アドバイス」だけといたします。
課題の内容がこれであるということは、その2乗の下3桁を求めるための手段は習っていると思います。
仮にそうでないとしても、どうすればそれが求められるか、を考えることが大切です。
プログラムは、事象をいかにして数学的に求めるか、です。
No1さんが答えておられますよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- 哲学 日本語は 言語類型として あたかも始原のごとくである 3 2022/05/29 04:41
- C言語・C++・C# LU分解法のピボット選択機能実装について(C言語・gcc-9) 1 2022/07/22 15:20
- その他(言語学・言語) ピダハン語 2 2022/07/14 12:41
- 数学 …こりゃ酷すぎる。回答者諸君、しっかりしなさい。初等的な問題にはまず初等的な解法を示すべきと心得よ。 7 2022/04/11 22:00
- 大学受験 長文失礼します 高3受験生女 愛知教育大学理科 (偏差値50 国立)志望です。 先週の共通テスト模試 5 2022/09/13 00:21
- 哲学 日本語は論理表現にふさわしくないか の問題です 4 2022/06/25 03:56
- C言語・C++・C# C言語の質問です、プログラミング初心者です このような文字列があった場合 "abcdef☆ghijk 4 2022/11/22 10:56
- 大学・短大 (工学部)とある数学の講義(必修)を自主休講しようか悩んでいます 7 2022/11/19 21:21
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正しい五十音順について
-
中置記法から後置記法(逆ポーラ...
-
[ EXCEL VBA ] 図形を読み込む...
-
Dijkstraて
-
あいまい検索(文字列一致率)
-
ライントレース アルゴリズム
-
センターの情報関係基礎の勉強...
-
アルゴリズムとプロトコールの違い
-
プログラミング
-
グループを均等に分けるには?...
-
期間重複チェックがわかりません
-
BCDについて
-
vbaで、連立方程式を解く方法に...
-
掃き出し法のアンダーフロー
-
OpenCVのライセンスについて
-
乗換案内の作り方が知りたいです。
-
ベイチ・カルノー図以外のとき方。
-
ランダム関数を作りたい。
-
Stuck
-
多変数関数の最小値を求めるプ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正しい五十音順について
-
Dijkstraて
-
Stuck
-
[ EXCEL VBA ] 図形を読み込む...
-
BCDについて
-
アルゴリズムとプロトコールの違い
-
期間重複チェックがわかりません
-
グループを均等に分けるには?...
-
三次元形状曲面の導出法
-
あいまい検索(文字列一致率)
-
Visual studio2019 C#で生まれ...
-
gooという検索エンジンの後にGo...
-
フリーセルの難易度について
-
C♯で電卓を作成しています。演...
-
経路探索について
-
CRC-CCITT16の算出法
-
理系の高校生です。大学で情報...
-
詰め将棋をとくのは、アルゴリ...
-
偏りのある乱数のアルゴリズム
-
OpenCVのライセンスについて
おすすめ情報