ページ 11

C言語のプログラミングについて

Posted: 2009年4月21日(火) 15:44
by 村泉葉上
この問題の答えや解答の指針をわかる範囲でいいので教えてください。

正整数の組(u,n)(但しu>1,n≧3)が最大2048個書かれたファイルを読み込み、個々の組に対し、以下の式(1)で定められるdと、この時の(x,y,z)の組を1つ求めよ。


(注)Nはn乗という意味です。uN は uのn乗 xN は xのn乗 yN は yのn乗 zN は zのn乗

d = uN - max{xN + yN +zN | x>0,y>0,z>0, xN + yN + + zN ≦ uN} (1)

但し、求めた結果を出力する際には、入力で与えられた組(u,n)も合わせて出力すること。

つまり与えられた二つ組(u,n)からなる数uNに対し、三つ組(x,y,z)及びnによって構成される式 xN + yN + zN との差が最小になる組を探索するプログラムを作れ、ということである。

Re:C言語のプログラミングについて

Posted: 2009年4月21日(火) 16:08
by バグ
>>この問題の答えや解答の指針をわかる範囲でいいので教えてください。

この掲示板では課題の丸投げは禁止されております。

どの部分が分からないのですか?
あなたはどの程度のプログラムに関する知識を有していますか?(学校でどんなことを習ったか程度で結構です)
もう少し具体的な質問をしないと、回答のしようがありませんよ(^_^;)

Re:C言語のプログラミングについて

Posted: 2009年4月21日(火) 18:11
by non
max{xN + yN +zN | x>0,y>0,z>0, xN + yN + + zN ≦ uN}
この部分がよくわからないのですが、
x,y,zは整数ですか?

Re:C言語のプログラミングについて

Posted: 2009年4月21日(火) 20:17
by たいちう
http://www2.realint.com/cgi-bin/tarticl ... intc+33014

石和稲井(2009/04/21 15:42:02)
村泉葉上 2009/04/21(火) 15:44

たて読み?もしかして、あと二箇所にマルチしてあるとか?

Re:C言語のプログラミングについて

Posted: 2009年4月21日(火) 21:47
by 通りすがり
縦読みできることに気づいたたいちうさんもすごい・・w

Re:C言語のプログラミングについて

Posted: 2009年4月21日(火) 22:59
by たいちう
http://detail.chiebukuro.yahoo.co.jp/qa ... 1325418778

を読んで、やっと問題の意味が分かった。
茶化すだけでもなんなので、一応解き方の説明を。

まず題意から、1 <= x <= y <= z として良いだろう。
for (xのループ)
	for (yのループ)
		for (zのループ) {
			差を計算
			if (差が最小) {
				差を更新
				x, y, z を覚えておく
			}
		}
x, y, zを表示
(u, n)の下限は問題にあるけど上限が書かれていないので、そこに注意しよう。
私が作るならば、一応64ビットの整数型で作っておいて、
大きな(u, n)については、読み込み時にエラー扱いしようかな。
どの位大きなかは考えてみてね。

> 縦読みできることに気づいたたいちうさんもすごい・・w

ありがとう。あと2箇所見つけた人がいるみたいだけど、
私の予想は4箇所の縦読みで4人分のフルネームだったのですが、
さすがに違いましたね。

Re:C言語のプログラミングについて

Posted: 2009年4月21日(火) 23:05
by たいちう
ループの終了条件を説明するのを忘れてました。
それぞれ次の条件で良いかと。
実行効率を考えるならば、もっと工夫すべきだけど。

x^n > u^n
x^n + y^n > u^n
x^n + y^n + z^n > u^n