C/C++の宿題を片付けます 100

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2007/12/08(土) 21:39:59
多分、この問題突き詰めていけば数式一本で計算終了できそうな悪寒。
953デフォルトの名無しさん:2007/12/08(土) 21:41:40
free論争再発の兆し
954デフォルトの名無しさん:2007/12/08(土) 21:42:59
個数が限定でない和が10倍は解ける?

合計が K となるサイコロのパターンの個数を表示せよ。ただし K ≦ 3000 とする
955デフォルトの名無しさん:2007/12/08(土) 21:44:59
>>954
2^(k-1)
956デフォルトの名無しさん:2007/12/08(土) 21:45:50
最低3000個、最高500個必要だが
今思ったがコンビネションのC(m,n)と関係ないか?
957デフォルトの名無しさん:2007/12/08(土) 21:49:02
C(3000,0)  C(2999,1)  C(2998,2) の気がしている
958デフォルトの名無しさん:2007/12/08(土) 21:49:25
>>956
最初コンビネで解こうと思ったら、一つの最大値6ってのをどうすればいいか分からなかったorz
俺の貧弱数学脳によればこれは組み合わせでは解けない、と思う(自信ないが)
959958:2007/12/08(土) 21:53:13
ああ、>>954の方の話か
>>958は忘れてくれ
960デフォルトの名無しさん:2007/12/08(土) 21:54:38
もっと簡単なしゅくだいかもーん
961デフォルトの名無しさん:2007/12/08(土) 21:57:08
早い奴できたよー

#include<stdio.h>
#define MAX_N_DICE (50)
#define MAX_N_SUM (300)
float result[MAX_N_DICE][MAX_N_SUM];

void prepare(int n_dice)
{
int i, k, sum;
for (k = 0; k < MAX_N_SUM; k++) {
result[n_dice][k] = 0.0;
for (i = 1; i <= 6; i++) {
sum = k+1-i;
if (sum >= (n_dice-1) && sum <= 6*(n_dice-1) && sum < MAX_N_SUM) {
result[n_dice-1][k] += result[n_dice-2][sum-1];
}
}
}
}
962デフォルトの名無しさん:2007/12/08(土) 21:57:43
>>961 つづき

int main()
{
int n, k;
for (k = 0; k < MAX_N_SUM; k++) { result[0][k] = k < 6 ? 1.0f : 0.0f; }
for (n = 1; n <= MAX_N_DICE; n++) { prepare(n); }

printf("The number of dices:");scanf("%d",&n);
printf("The sum of numbers:");scanf("%d",&k);
printf("The number of the pattern: %f", result[n-1][k-1]);
return 0;
}
963デフォルトの名無しさん:2007/12/08(土) 21:59:27
いつものくせでfloatにしちまったが気にスンナ
964デフォルトの名無しさん:2007/12/08(土) 22:01:53
>>651
遅い
965デフォルトの名無しさん:2007/12/08(土) 22:04:26
666666
1566666
2466666
3366666
2556666
3456666
という列が生成できればいいと思う
966デフォルトの名無しさん:2007/12/08(土) 22:08:43
>>961はぇえええええ

>>961の才能に嫉妬w
967デフォルトの名無しさん:2007/12/08(土) 22:17:40
968デフォルトの名無しさん:2007/12/08(土) 22:53:09
>>961
ん?double型の有効桁数超えてない?気のせい?
969デフォルトの名無しさん:2007/12/08(土) 23:53:33
[1] 授業単元プログラミング
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5432.txt
[3] 環境
 [3.1] XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 12/11
[5] その他の制限: 特になし

970デフォルトの名無しさん:2007/12/08(土) 23:54:01
>>968 >>961
うん、有効桁数全然足りてないね
そのプログラムだと n = 50, k = 170 のとき
24456539641287986023030807574303735808
と表示されるけど、正解は
24456535588845712147456213502130798435
のはず。
971デフォルトの名無しさん:2007/12/08(土) 23:59:21
long long で駄目な時点でdoubleでも無理だわな
972デフォルトの名無しさん:2007/12/09(日) 00:42:24
ここはアルゴリズムの高速化よりも処理効率の向上を目指しても面白いと思うんだ
マルチプロセッサ対応とかSSEとか機械語とか
973デフォルトの名無しさん:2007/12/09(日) 00:47:34
>>970
だが、アルゴルだけは正しそうなんで、あとは多倍長ライブラリに移植すれば、O(n*k)で計算可能?
974デフォルトの名無しさん:2007/12/09(日) 00:50:06
多倍長加算に多分O(n)要るから、O(n*n*k)だろ
975デフォルトの名無しさん:2007/12/09(日) 01:38:44
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):1. 以下のような、関数形式マクロで値が負、零、正で、-1、0、1を返すsign()を定義するように、()の中に文字を入れなさい。
# define sign(x)( )


[3] 環境
 [3.1] OS:Windows
 [3.3] 言語: C
[4] 期限:2007年12月10日15:00まで
[5] その他の制限:特になし
976デフォルトの名無しさん:2007/12/09(日) 01:41:40
# define sign(x) (x<0?-1:x!=0)
たぶんこんな感じだと思うけど確認してない
977デフォルトの名無しさん:2007/12/09(日) 01:52:17
ちょっと早い気もするが次スレ

C/C++の宿題を片付けます 101代目
http://pc11.2ch.net/test/read.cgi/tech/1197132472/
978デフォルトの名無しさん:2007/12/09(日) 02:26:46
>>975
#define sign(x) ((0<x)-(x<0))
979デフォルトの名無しさん:2007/12/09(日) 04:16:21
>>975
#define sign(x) ((x)==0 ? 0 : ((x)<0 ? -1 : 1))
980デフォルトの名無しさん:2007/12/09(日) 10:37:54
http://qb5.2ch.net/test/read.cgi/operate/1196529079/749

749 名前:マァヴ ◆jxAYUMI09s [] 投稿日:2007/12/08(土) 17:56:40 ID:mzzKkj6v0 ?PLT(25001)
2007年12月11日の 午前11時00分より 正午まで
サーバセンターでスイッチのメンテナンスを行うんだけど
そのスイッチにぶら下がってるサーバはほとんど2chのサーバだったりする(^_^;)

たぶん、大量に繋がらないサーバが出るはず(^_^;)

752 名前:マァヴ ◆jxAYUMI09s [] 投稿日:2007/12/08(土) 18:05:32 ID:mzzKkj6v0 ?PLT(25001)
>749
日本時間です(^_^;)
982デフォルトの名無しさん:2007/12/09(日) 14:25:14
[1] 授業単元:C言語基礎
[2] 問題文(含コード&リンク):

名前、身長、体重、視力(視力構造体)これらのデータをメンバとする構造体を定義し、入力と表示を行うプログラムを作成してください。
入力件数は最大5件で、名前は19文字までの入力とし、範囲外だったならばエラーメッセージを表示し再入力させてください。
名前に”END”が入力された時は入力終了とします。
表示は身長で昇順にソートして出力してください。
また身長、体重は、小数点以下第一位までの表示とします。視力は、小数点以下第三位までの表示とします。
出力の幅は、名前が19文字分、そのほかは5文字分で指定してください。
視力は右、左をメンバとする構造体で扱ってください。
1件分の入力はinput_data()で、表示はdisplay_data()で、ソートはsort_data()でと処理を関数に分けて行ってください。
名前入力の最初に”END”が入力された場合は、その旨のメッセージを出力してください。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VisualC++2005ExpressEdition
 [3.3] 言語:C
[4] 期限:特になし
[5] その他の制限:よろしくお願いします。
983デフォルトの名無しさん:2007/12/09(日) 16:27:55
984デフォルトの名無しさん:2007/12/09(日) 16:31:05
あ、くそっ、メッセージ表示忘れた。
42行目をbreak;からputs("ENDが入力されたので、入力処理を終了します。") break;に書き直しだ。
985デフォルトの名無しさん:2007/12/09(日) 17:00:57
小数点第三位まである視力ってw
まぁ、課題だから色々あるんだろうけど…
986デフォルトの名無しさん:2007/12/09(日) 18:18:51
視力0.005ですが何か?
987デフォルトの名無しさん:2007/12/09(日) 19:10:43
およそ0でいいだろそんなの。
むしろ小数点以下要らない。
988デフォルトの名無しさん:2007/12/09(日) 20:52:24
>>983
ありがとうございます
ただENDを入力しても入力処理が終了しないような気がするんですが・・・
989デフォルトの名無しさん:2007/12/09(日) 20:57:36
>>988
気がするだけ
990デフォルトの名無しさん:2007/12/09(日) 20:59:04
>>983
これはひどいw
991デフォルトの名無しさん:2007/12/09(日) 20:59:46
あっちゃんと入力終了しました
ありがとうございます
992991:2007/12/09(日) 21:06:23
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5453.txt

頑張って自分なりにも作ってみたんですが
どうしてもendで入力終了させることが出来ません
それ以外でもおかしい所があれば
スレ違いかもしれませんが教えてくれませんか?
993デフォルトの名無しさん:2007/12/09(日) 21:14:13
>>992
inputdataの戻り値をmainでチェックする
994991:2007/12/09(日) 21:27:52
>>993
あっそういうことですか!
ありがとうございました
995デフォルトの名無しさん:2007/12/09(日) 22:36:23
せっきす
996デフォルトの名無しさん:2007/12/09(日) 22:48:00
え? つよきす?
997デフォルトの名無しさん:2007/12/09(日) 22:48:38
1000
998デフォルトの名無しさん:2007/12/09(日) 22:49:50
みにきす
999デフォルトの名無しさん:2007/12/09(日) 22:50:45
1000なら今年受験に合格して、
来年は大学でハーレム形成する
1000デフォルトの名無しさん:2007/12/09(日) 22:51:13
1000なら今年受験合格して、
来年は大学でハーレム形成する
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。