C/C++の宿題片付けます 122代目
■ このスレッドは過去ログ倉庫に格納されています
0718デフォルトの名無しさん
2009/02/17(火) 21:12:17どう実装してもよいので比の連立方程式が与えられた時に
それを満たす最小の自然数の組を求めるプログラムを作れ。
答えがない場合は「no answer」と表示する
わかりにくいかもしれないので、問題文らしくしてみると
同じサイズで空でない配列a,b,c,dを考え、iを添え字とする
a[i],b[i]の値はある集合Xの要素xjの添え字jを表す
a[i]:b[i]=c[i]:d[i](つまり、b[i]*c[i]=a[i]*d[i])の関係式を与えられた時
全ての関係式を満たす最小の自然数xjの組e[i]を返せ
(この問題の形式に従う必要は無い)
例1 a={1,2,3,4},b={2,3,4,5},c={10,3,2,7},d={3,5,5,12}の時
x1:x2=10:3
x2:x3=3:5
x3:x4=2:5
x4:x5=7:12
この解となる組の集合うち、全てが自然数で最小のものであるe={140,42,70,175,300}(={x1,x2,x3,x4})を出力する
例2 a={2,3,1,4},b={1,2,3,2},c={5,3,4,6},d={6,2,5,3}
x2:x1=5:6
x3:x2=3:2
x1:x3=4:5
x4:x2=6:3
このときe={12:10:15:20}(={x1,x2,x3,x4})を出力する
例3 a={1,1,2} b={2,3,3} c={1,1,1} d={2,3,1}の時これを満たす自然数はないため「no answer」と表示する
[3] 環境 WinXP,VC8.0(or gcc 3.4.4 with cygwin),C++、Cどちらでも可
[4] 期限: なし
[5] その他の制限:標準以外のライブラリはなし(STLはOK,Boostはだめ)
特に「どうやってループを回すか」がわからない
例1みたいな直列につながった例なら何とか解ける気がするが
例2みたいになるとどうやって解いて良いのかわからずつまづいた
よろしくお願いします
■ このスレッドは過去ログ倉庫に格納されています