あやのりん |
問題文の意味を理解するのに時間がかかりました…(笑)
一つ目は14ですね。あとは途中が埋まるので、59+37+19+14+7+3+2+1=142 の次なので143。 |
12月10日(木) 0:10:49
49841 |
ベルク・カッツェ |
小さいほうの数を14にすると、相田が綺麗に埋まるので1から142まで作ることが可能。よって大きいほうを143にすればよい。 |
12月10日(木) 0:10:52
49842 |
今年から高齢者 |
1+2+3+7=13なので14ができない:14が1枚目
14を加えると、1〜14+13=27までができる。 34-19=15、59-34=25。これらは27より小さいので全部埋められる。 あとは全部足して、142。次は143 |
12月10日(木) 0:18:09
49843 |
今年から高齢者 |
足す時に、なぜか4を加えていて、147で送っていた。
名前が出てこないので、間違いに気付いた。 |
12月10日(木) 0:21:58
49844 |
だいすけ @カレー好き |
1〜13が作れて、14〜18が作れないので、
14〜18を作るためには5〜14のどれかを追加する必要がある。 それ(nとする)を追加すると、128+nまで全部作れるようになるので、 もう一個は128+n+1を追加すると良い。 nが14が最大なので、128+14+1=143 |
京都
12月10日(木) 0:36:03
49845 |
Mr.ダンディ |
1枚目が14であることを忘れ
143,286 として 286を送信してしまっていて遅れました。 (いくつになっても「早とちり」がなくなりません) |
12月10日(木) 0:38:31
49846 |
紫の薔薇の人 |
1,2,3,7,19,37,59で最初に作れない数が14、
1,2,3,7,14,19,37,59で最初に作れない数が143 // |
12月10日(木) 0:43:31
49847 |
だいすけ @カレー好き |
最近、久々に毎週リアルタイム参戦させいていただいていますがやっぱり楽しいですね!
そういや算チャレポイントランキングってあったなぁとふと思い出しましたが、 sugitakukunさんのホームページを見に行くと、ジオシティーズのためサービス終了となっていました( ;∀;) 当時の配点分かったら、自分のモチベのためにも、ポイントランキング復活させたいなぁと思いつつ・・・ |
京都
12月10日(木) 1:08:09
49848 |
にこたん |
猫が膝に乗っていたので適当に暗算しました。 |
超ど田舎
12月10日(木) 5:05:41
HomePage:気ままに 49849 |
「数学」小旅行 |
全部足しました。その次の数があるといいのかと。。。 |
12月10日(木) 6:35:00
49850 |
ドリトル |
今回はコツコツと調べる必要性のある
時間のかかる問題でしたね。皆さんよく見てると ミスがあっただけでその後は難なく解けてますし、 正答率も最初低かった(42%)けど今は7割ほどですし アイデア系ではなくいつもより早く解法を見つけて計算に時間をかけよう系 だったのかもしれません。※個人の感想です。 でも問題は十分面白かったので、いいと思います。 |
12月10日(木) 7:30:21
49851 |
スモークマン |
1+2+3+7=11となぜか思い込んで勘違いしてました...^^;;
なはっ... あと、144にすれば、143が表せない最大になると考えるのかとも思ったりで... |
12月10日(木) 8:18:49
49852 |
巷の夢 |
#49841
あやのりん様と同様に解いたのですが、59+37+19+14+7+3+2+1=142 の次なので143に気づかず、何種類かの組み合わせをExcelで解きました。 自分でもセンスのなさに絶望です。 |
真白き富士の嶺
12月10日(木) 9:58:20
49853 |
おすまん |
14に気づいた後は、コツコツ確認しておりましたが、
多分「全部盛り」までは「穴」はない、と睨んで…(^^; (#49850 「数学」小旅行さまと同じ?) 前回は、情けないことに正解できず…orz #49840 紫の薔薇の人さまの解説を読んで勉強します! |
somewhere in the world
12月10日(木) 21:19:11
49854 |
おすまん |
数列の問題にもなるのかなと思い、オンライン整数列大辞典(OEIS)で
調べてみましたが、該当なしでした(^^; |
somewhere in the world
12月11日(金) 4:08:40
49855 |
M |
Pythonで総当たり、for文を2回転(1回目で最大値、2回目でその時の整数)させています。atcoderですと時間切れですね。
https://colab.research.google.com/gist/naritatsu/6c903d2cc29ab71758c20bb9541631ea/math_challenge_1154.ipynb?hl=ja |
12月11日(金) 16:36:52
49856 |
ハラギャーテイ |
友人が解いてくれました |
12月12日(土) 20:04:15
MAIL:tfuruya@aria.ocn.ne.jp 49857 |
ホクメイ |
なんとか解けたものの、なんとなくしっくりこないです。
より抽象化して考えると面白そうですね。 |
12月14日(月) 2:38:10
49858 |
「数学」小旅行 |
今週の問題更新が無かったので、いつものようにプログラムを楽しみました。
Rubyです。 #第1154回の問題 #まず1,2,3,7,19,37,59を使って作れる数を全部作ります。そして、個数を調べます。 a=[0,1];b=[];a.each{|i|a.each{|j|a.each{|k|a.each{|l|a.each{|m|a.each{|n|a.each{|o|b.push 1*i+2*j+3*k+7*l+19*m+37*n+59*o}}}}}}};p b.uniq.count-1 #0から連続している整数がどこまであるか調べます。欠けている最小の数を求めます。 c=0;c+=1 while b.index{|e| e==c };p c #その数を加えてできる数を全部作ります。そして、個数を調べます。 b=[];a.each{|i|a.each{|j|a.each{|k|a.each{|l|a.each{|m|a.each{|n|a.each{|o|a.each{|h|b.push c*h+1*i+2*j+3*k+7*l+19*m+37*n+59*o}}}}}}}};p b.uniq.count-1 #0から順に調べて欠けている最小の数を求めます。これが求める数になります。 c=0;c+=1 while b.index{|e| e==c };p c ブラウザで実行できるPAIZA.IOのお試し版で、0.10秒でした。 |
12月17日(木) 9:57:11
49859 |
「数学」小旅行 |
読みにくいので、必要最小限で書くと、
a=[0,1];b=[];a.each{|i|a.each{|j|a.each{|k|a.each{|l|a.each{|m|a.each{|n|a.each{|o|b.push 1*i+2*j+3*k+7*l+19*m+37*n+59*o}}}}}}} c=0;c+=1 while b.index{|e| e==c } b=[];a.each{|i|a.each{|j|a.each{|k|a.each{|l|a.each{|m|a.each{|n|a.each{|o|a.each{|h|b.push c*h+1*i+2*j+3*k+7*l+19*m+37*n+59*o}}}}}}}} c=0;c+=1 while b.index{|e| e==c };p c |
12月17日(木) 13:52:27
49860 |
「数学」小旅行 |
2,4行目のindexはfindのほうが意味がよくわかりますね。訂正します。 |
12月17日(木) 14:04:46
49861 |
ホクメイ |
今週はお休みでしょうか。 |
12月17日(木) 15:32:06
49862 |
「数学」小旅行 |
もう少し簡潔にできないものかと( ^ω^)・・・
s=[];r=[0,1] a=[1,2,3,7,19,37,59];n=a.size; r.repeated_permutation(n).to_a.each{|w|t=[];a.each_index{|i|t<<w[i]*a[i]}; s<<t.sum} c=0;c+=1 while s.include?(c) a<<c;n=a.size; r.repeated_permutation(n).to_a.each{|w|t=[];a.each_index{|i|t<<w[i]*a[i]}; s<<t.sum} c=0;c+=1 while s.include?(c) p c a の要素を変更するだけで対応できます。3,4行目と6,7行目は同じなのでサブルーティンにしてもいいです。 |
12月18日(金) 8:22:31
49863 |
「数学」小旅行 |
度々失礼いたします。
さらに改良して、追加する数が、すべてを使ってできる数より大きい数になるまで求めるようにしました。begin,end,whileでループします。 ああ!おもしろかった(^^)おじゃましました。m(_ _)m r=[0,1];a=[1,2,3,7,19,37,59];n=a.size begin s=[];r.repeated_permutation(n).to_a.each{|w|t=[];a.each_index{|i|t<<w[i]*a[i]}; s<<t.sum} c=0;c+=1 while s.include?(c) a<<c;n+=1 end while c<s.max p c |
12月18日(金) 9:48:11
49864 |
mukku |
いつもは幾何のときしかやらないけど、今日は面白そうだったので、pythonでやってみました。久々にプログラム書いたな。
a = [1,2,3,7,14,19,37,59] b = [] l = len(a) for i in range(1,1<<l): s = 0 for t in range(0,l): if (i>>t)%2 == 1: s+=a[t] if not s in b: b.append(s) for i in b: if not i+1 in b: print(i) break |
12月19日(土) 6:02:47
49865 |
「数学」小旅行 |
ビットシフトで足すか足さないかを決めるという方法ですね。
なるほどうまく考えるものですねえ。面白いです。 そのままPaiza.IOに貼り付けてもだめだったので、調べてみると、 pythonでは重要な意味をもつ半角スペース4個が掲示板の表示では消えているのですね。(^^)/ちゃんとできました。 |
12月19日(土) 10:14:22
49866 |
いちごみるく |
#49848
http://www.ranking.sansu.org/ これじゃ駄目なんですか? |
12月21日(月) 23:39:11
49867 |
いちごみるく |
プログラムでやるならこんなですか
#include "bits/stdc++.h" using namespace std; #define endl "\n" int main() { vector<int>A = { 1,2,3,7,19,37,59,0,0 }; int sum = 0; for (int i = 0; i < A.size(); ++i) { sum += A[i]; } int ans = -1; int ans1 = -1; int ans2 = -1; for (int x = 5; x <= 14; ++x) { for (int y = x; y <= sum + x + 1; ++y) { set<int>st; A[7] = x; A[8] = y; for (int i = 0; i < (1 << 9); ++i) { int num = 0; for (int j = 0; j < 9; ++j) { if (1 & (i >> j)) { num += A[j]; } } st.insert(num); } for (int i = 0; i <= sum + x + y + 1; ++i) { if (0 == st.count(i)) { if (ans < (i - 1)) { ans = i - 1; ans1 = x; ans2 = y; } break; } } } } cout << ans << endl;//連続して作れる最大の数 cout << ans1 << endl;//加えた数の小さい方 cout << ans2 << endl;//加えた数の大きい方 } |
12月21日(月) 23:52:12
49868 |