No.3ベストアンサー
- 回答日時:
こんなのプログラム書けば一瞬で答えが出ますね:
#include <stdio.h>
#include <stdbool.h>
void
FindNum(int nums[], int num_nums, int level, int remains,
bool used[], bool no_same)
{
if (level < 0 || remains < 0)
return;
if (level == 0 && remains == 0) {
for (int i = 0; i < num_nums; ++i) {
printf("%d", nums[i]);
}
printf("\n");
return;
}
for (int i = 0; i < 10; ++i) {
if (no_same && used[i]) {
continue;
}
if (remains >= i) {
nums[num_nums] = i;
used[i] = true;
FindNum(nums, num_nums + 1, level - 1, remains - i, used, no_same);
used[i] = false;
}
}
}
void
FindCombination(int max_digits, int min_digits, int sum, bool no_same) {
int nums[max_digits];
for (int digits = max_digits; digits >= min_digits; --digits) {
bool used[10] = {false};
printf("Digits = %d, Sum = %d\n", digits, sum);
FindNum(nums, 0, digits, sum, used, no_same);
printf("\n");
}
}
int
main(void)
{
FindCombination(4, 2, 15, false);
FindCombination(4, 3, 31, false);
FindCombination(4, 3, 32, false);
return 0;
}
> bin-chanさんが質問していた同じ数字は使えない
> 等のしばりはどうします?とありましたが、しばりは
> なしで考えてくれればと思っています。
> あと、4ケタで31、32になる数字の組み合わせがあれば
> 教えていただけないでしょうか?
上記のプログラムによると、同じ数字を使えないという縛りを入れると、4桁で31, 32になる組み合わせは作れません。
同じ数字を許すと、こんな感じですね。
4桁で31になる組み合わせ:
4999
5899
5989
5998
6799
6889
6898
6979
6988
6997
7699
7789
7798
7879
7888
7897
7969
7978
7987
7996
8599
8689
8698
8779
8788
8797
8869
8878
8887
8896
8959
8968
8977
8986
8995
9499
9589
9598
9679
9688
9697
9769
9778
9787
9796
9859
9868
9877
9886
9895
9949
9958
9967
9976
9985
9994
4桁で32になる組み合わせ:
5999
6899
6989
6998
7799
7889
7898
7979
7988
7997
8699
8789
8798
8879
8888
8897
8969
8978
8987
8996
9599
9689
9698
9779
9788
9797
9869
9878
9887
9896
9959
9968
9977
9986
9995
..余談ですが、3桁で作れる和の最大値は9 * 3で27なので重複を許しても、31、32は無理ですよね。
No.2
- 回答日時:
三けたは無理
9+9+9=27が最高だからね。
6+8+8+9=31
6+8+9+9=32
は?
No.1
- 回答日時:
「同じ数字は使えない」等のしばりはどうします?
以下、組み合わせのみ、順序入れ替えは省略
2けたの数字で15:
69
78
3けたの数字で15:
159
168
249
258
267
348
357
456
4けたの数字で15:
1239
1248
1257
1347
1356
2346
3桁で31、32になる数字の組み合わせは無理。
題意の読み取りがまちがってるかも。
この回答へのお礼
お礼日時:2013/07/27 14:53
bin-chanさん、質問の回答ありがとうございます。
bin-chanさんが質問していた同じ数字は使えない
等のしばりはどうします?とありましたが、しばりは
なしで考えてくれればと思っています。
あと、4ケタで31、32になる数字の組み合わせがあれば
教えていただけないでしょうか?
お願いします(-_-)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 無理数の数字の組み合わせ。無限の意味について 5 2022/05/28 22:53
- 数学 これって正しいんじゃないの? 「無理数を小数で表現すると、小数点以下に数字が無限に続きますが、それら 5 2022/05/29 23:56
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- 数学 ロト6の当選確率 3 2022/06/09 22:47
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- 数学 iPhoneの画面を4桁の数字でロックする場合 パスワードの組み合わせは 0から9までの10種類の数 3 2023/05/26 11:25
- その他(プログラミング・Web制作) COBOL数値転記をCOPY句内での仕様 6 2022/06/15 18:48
- その他(ソフトウェア) パソコンソフトのシリアルナンバー 4 2023/08/16 15:56
- その他(IT・Webサービス) HTML コンピューターについて 6 2022/07/12 16:37
- Excel(エクセル) 名前と日付が一致する箇所にフラグを立てる関数が知りたいです 4 2022/08/11 02:24
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「指定されたキャストは有効で...
-
複数桁10進数の*桁目だけを抽出...
-
#define _CRT_SECURE_NO_WARNIN...
-
C言語での引数の省略方法
-
【C++】関数ポインタの使い方
-
比較回数と交換回数表示について
-
C言語で三目並べをするプログラ...
-
if と配列の組み合わせ
-
商と剰余を同時に求める(C言語)
-
C言語での奇数の和
-
ラップ関数とはどんなものですか?
-
Arduinoのプログラムにエラーが...
-
C言語
-
並列プログラミングのπ計算につ...
-
C言語 エラーの原因がわからな...
-
インライン展開されているか確...
-
GlobalAllocの変数を関数に引き...
-
HANDLEて何ですか?
-
read関数をノンブロッキングで...
-
C++でvectorにテキストファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
「指定されたキャストは有効で...
-
C言語 配列と関数の練習問題
-
複数桁10進数の*桁目だけを抽出...
-
(int *)の意味
-
if と配列の組み合わせ
-
ラップ関数とはどんなものですか?
-
卒業研究でよく分からないとこ...
-
【C++】関数ポインタの使い方
-
c言語
-
足して100になるような乱数のア...
-
C言語初心者です、、、お助けく...
-
数字列を3桁ごとにカンマで区切...
-
C言語 エラーの原因がわからな...
-
実数の整数部,小数部の取得
-
課題でつまってます・・・
-
商と剰余を同時に求める(C言語)
-
C言語の配列をC++のvectorに高...
-
std::set<int> で、ある値が何...
おすすめ情報