【ExcelVBA公開模試】フロベニウス硬貨交換問題(その2)
文法を無視して、とりあえず動けばいいという邪道ExcelVBA講座こと「速読VBA単語」に準拠した問題を出題します。
問題
A円の硬貨とB円の硬貨を使って支払うことができない金額を求める問題のことを「フロベニウスの硬貨交換問題」という。図1でセルB1、B2に2以上の整数値を入力する。セルB1の値を「A」、セルB2の値を「B」とする。
(1)図2のようにA円の硬貨とB円の硬貨を使って支払うことのできない金額をすべて表示しなさい。ただし、AとBが互いに素の場合は「最大公約数が1ではない!」と表示して終了する。
(2)5円の切手と62円の切手を使用して支払うことのできない料金の最大値を求めなさい。
<図1>
<図2:設問(1)完成イメージ>
わえなび式 正解例
(このページの下にあります)
目標回答時間
プロ5分以内、アマチュア10分以内に処理ができたら合格
この問題の出題範囲
「速読VBA単語」Program3-9まで
ご案内
ExcelVBAをなんとなく理解できればいいという初心者のための「速読VBA単語」を受講希望の方はカリキュラムをご覧ください。
考え方
補題を参考にしてください。補題設問(2)のコードに2行追加するだけです。
フロベニウス硬貨交換問題(その1補題)
https://note.mu/waenavi/n/nbe0b70d640b1
正解例
設問(1)
Sub moshi()
a = Range("B1")
b = Range("B2")
For i = 2 To a
If i > b Then Exit For
If a Mod i = 0 And b Mod i = 0 Then
Debug.Print "最大公約数が1ではない!"
Exit Sub
End If
Next
For i = 1 To a
For j = 1 To b
c = (j - 1) * a + i
If c Mod a = 0 Or c Mod b = 0 Then Exit For
Cells(j + 4, i) = c
Next
Next
End Sub
設問(2)最大値は243円です。
バックナンバー
この記事が気に入ったらサポートをしてみませんか?