1455973692 【クイズ】駐車スペースに、1から順に番号をつけます。

ただし、4または13を含む数字は除外します。4*、13*なども除外します。1*3のように、13の間に4以外の数字が入る場合は除外しません。このとき、

(1)1000番まで番号をつけるには、最低何台分のスペースが必要ですか。
(2)1000台ぶんの駐車スペースに番号をつけたら、一番大きな数字は何ですか。

回答の条件
  • 1人10回まで
  • 登録:2016/02/20 22:08:12
  • 終了:2016/03/14 15:56:48

ベストアンサー

id:usamin5885 No.5

usamin5885回答回数11ベストアンサー獲得回数52016/02/22 09:35:46スマートフォンから投稿

(1)
普通の9進数に変換(4以上の位を-1する)
1000→1000

10進数に変換する。
1*9*9*9+0*9*9+0*9+0=729

*13、13*の個数を引く。
729-9-9=711
→711


(2)
1000に、2000までの**13、*13*、13**の個数を足す。
1000+2*9+2*9+81-1=1116

普通の9進数に変換
1116/9=124*9+0
124/9=13*9+7
13/9=1*9+4
→1470

さらに4無し9進数に変換(4以上の位を+1する)
→1580

除外しすぎた**13(1613、1713、1813、1913)を戻す
1580-4=1576
→1576

id:libros

回答ありがとうございます。
すっきりして見やすい答だと思います。
おや、こんなシンプルな計算でいいのかと不思議な感じ。

2016/02/22 15:54:01

その他の回答(4件)

id:a-kuma3 No.1

a-kuma3回答回数4412ベストアンサー獲得回数18032016/02/21 00:05:24

「YOUスクリプトごと書いちゃえよ」ですよ。

そんなもんかな :-)
無粋を承知で、プログラムという反則技を。

n = 1
nn = 0
while true
    if /(4|13)/ !~ n.to_s then
        nn += 1
    end
    if n == 1000 or nn == 1000 then
        puts "n=#{n} : #{nn}"
        exit if nn == 1000
    end
    n += 1
end

求まった答え。

n=1000 : 711
n=1576 : 1000

Python とかだと reduce 使うのかな(リクエストしてます :-)。

筆算で解くとしたら、場合分けで引いていくのかな、と思うのですけれど、中々答えが合わないのは内緒だ。
# 飲み過ぎかな



追記です。

(1)1000番まで番号をつけるには、最低何台分のスペースが必要ですか。

4 を含む 1000 までの数字

***4
10^2 = 100
**4* : ***4 を除く
10^2 - 10^1 = 90
*4** : **4* と ***4 を除く
10^2 - 10^1 - (10^1 - 1) = 81

13 を含む 1000 までの数字

**13 : *413 を除く
10^1 - 1 = 9
*13* : *134 を除く
10^1 - 1 = 9

ということで……

10^3 - 100 - 90 - 81 - 9 - 9 = 711

# なぽりんさんの考え方の方が、ぐっとスマート

他2件のコメントを見る
id:NAPORIN

つぎは1abcか… 289個数えるのも面倒だしグラフも同じことだし…うわっめんどくさいなこれ。711からの増加予定数289におよそ3割たして、しかも1300台は連続100個除外だから、1500からカウントアップの見当をつけるくらいですねえ

2016/02/21 00:36:02
id:a-kuma3

試験問題の類だとしたら、(2) の解き方は (1) の延長線上にあるのだと想像しますけど、さっぱりアイデアが浮かんできません (´・ω・`)

2016/02/21 00:40:36
id:rsc96074 No.2

rsc回答回数4380ベストアンサー獲得回数3982016/02/21 00:33:56

 上の方と同じ結果を得ました。o(^-^)o
(1) 711
(2) 1576
 計算に使ったプログラムはこちらです。(^_^;

 皆さん、正規表現を使っているようなので、私も正規表現でやってみました。(^_^;

# coding: UTF-8
# ParkingSpc2.py

import re

def main():
    cnt = num = 0
    while cnt< 1000:
        num+=1
        if re.search(r'4|13',str(num)): continue
        cnt+=1
        if num==1000: print '(1)',cnt

    print '(2)',num

if __name__ == '__main__':
    main()
id:psne No.3

ぽけっとしすてむ回答回数444ベストアンサー獲得回数2362016/02/21 09:32:28

なんだか申し訳ない感のあるやつです

var count1 = 0; //現在の台数
var count2 = 1000; //欲しい台数
var i = 0;
do {
	i++;
		if (/(4|14?3)/.test(i) == 0) {
			count1++;
			//console.log(i); 詳細表示
		};
		if (i === 1000) {//1000番目までの台数
		console.log('Ans1 = ' + count1);
	}
} while (count1<count2);
console.log('Ans2 = ' + i);
console.log('result = ' + count1);

Ans1 = 711
Ans2 = 1576
result = 1000

id:a-kuma3

4? は、要らなくないですか?

2016/02/21 12:32:03
id:psne

プログラム的には /(4|13)/.test(i) で全く問題無いのですが(1と3の間でも、4単体にチェックが入る)、
問題に対する解答を説明する為に、まずは質問文をそのまま仕組みに変える方法が良いかな という申し訳ない感があるものです。
#言い訳を考える

2016/02/21 21:25:35
id:NAPORIN No.4

なぽりん回答回数4608ベストアンサー獲得回数8452016/02/21 15:11:28

(1)
あおったので回答かきます。
場合分けでやると、000~999の3桁の数字のどこにも4が出ないグループの数は9の3乗で729です。
(これは、abcという三桁の数字のaの候補の数とbの候補の数とcの候補の数を掛ける行為です)

次に、13が入ってるグループをもとめます。合致する数は3桁では13*と*13だけで、かつ*=4はすでに除かれています。
したがって*は9個しか候補がないので、13*が9個、*13が9個の合計18個。
729から18をひいて711です。(ワクは1から順番ですので、000という名前のワクは除外して、かわりに1000という名前のワクを足すので合計のワクの数は変わらず711です。)

(2)
1~1000の名前をもつワクの個数は711とわかっているので1001~の名前で289個のワクが追加で必要です。
1000~1999のワクの名前を1abcという変数としてあつかいます。
(2)で求める最大の1abcは1499であろうと適当に予測します(さっきといた(1)で、3割くらいは消えることがわかっているから逆に289から10/7=1.5倍強、カサマシしておくというわけです)。これを検算します。

000~499のなかの4が入らない数字は(5-1)×(10-1)×(10-1)=324個あります。aの位の候補とbの位の候補とcの位の候補をかけあわせてるだけです。(289より大きくてちょっと安堵。)
そして13について考えます。aの位には、4のほか、3も入ってはいけない(aに3を代入すると13bcという名前を持つ駐車ワクができるため)ので、さっきの式を訂正します。(5-2)×(10ー1)×(10-1)は、243個あります。このグループには4が入った数字と13bcの数字が入っていませんが1a13や113cの形の不純物はまだ残っています。(おっと、ここで289より小さくなってしまった。どうやら1499の予測は小さすぎなのであわてて上方修正すべきかもしれないのですが、いやいやあわてずにこのままやってみましょう。)
 
1a13は、aが0~4のうち、3,4はつかえない(もう除いた)ので、残っている不純物のワクは1013,1113,1213の3つだけですね。3個除きましょう。
113cはc候補が0~9のうち4が既に除かれているので9個除きましょう。
あわせて12個の不純物を除くことで、1000~1499の間の使えるワクの数は243-3-9で231だとわかります。これを711に足すときには1000番ワクを重複カウントすることになるので1を引く。1499までの名前をもつワクの総数は941であります。のこり59個あればちょうど1000個のワクがつくれます。
 
今度は1500~1599から59個のワクを調達する件ですが、これはもう簡単です。bが1すすむごとに9個のワクが追加されます。4抜きの9進数になっています。59/9の答えは10進法で6あまり5。途中で1513をも不使用にするので、あまりに1つたして、6。6あまり6を4抜きの9進数で表現するとこうなります。77。したがって1499に77を足して1576が答え。あってたかな。
 
答えが11bcになるような問題であると最後のほうがもうすこしややこしそうです。
おおむね、1000を4抜き9進数で表現した上で、http://www2.odn.ne.jp/~aai55890/yosi/sinnhou.htm
その範囲内にあるza13やz13c、13bcを積み上げていくほうがスマートかなーとおもいます。

id:libros

回答ありがとうございます。
たいへん丁寧な解説で、とてもわかりやすいです。

2016/02/22 15:32:23
id:libros

これって機械的に解いたら楽勝かなと、うすうす予想しつつも、断りをいれずに出題したら、ホントに瞬殺でしたね。「学習・教育」カテゴリなのにちょっと大人げないんじゃないですか皆さま。…いや、大人だからこそ機械的に処理するのか (笑

とか何とか言いつつ、プログラムで解を求めたらこうなるのかと知れて興味深いです。ありがとうございます。

紙と鉛筆で解くほうはいかがでしょう。No.4のなぽりんさん(id:NAPORIN) が結構いい感じに解いてくださってますが、これを超える綺麗な解はありますか?(挑発

id:usamin5885 No.5

usamin5885回答回数11ベストアンサー獲得回数52016/02/22 09:35:46スマートフォンから投稿ここでベストアンサー

(1)
普通の9進数に変換(4以上の位を-1する)
1000→1000

10進数に変換する。
1*9*9*9+0*9*9+0*9+0=729

*13、13*の個数を引く。
729-9-9=711
→711


(2)
1000に、2000までの**13、*13*、13**の個数を足す。
1000+2*9+2*9+81-1=1116

普通の9進数に変換
1116/9=124*9+0
124/9=13*9+7
13/9=1*9+4
→1470

さらに4無し9進数に変換(4以上の位を+1する)
→1580

除外しすぎた**13(1613、1713、1813、1913)を戻す
1580-4=1576
→1576

id:libros

回答ありがとうございます。
すっきりして見やすい答だと思います。
おや、こんなシンプルな計算でいいのかと不思議な感じ。

2016/02/22 15:54:01
  • id:a-kuma3
    プログラムで解いちゃうとつまらないよねえ、きっと *-)
  • id:rsc96074
    (^_^;
  • id:NAPORIN
    中学生でも、なんなら小学生でも頑張れば解ける問題をわざと出題しているということは、ブロスさんの実生活に直接からむ問題ではないかと予想いたします。
    早く正確な回答をつくるためには、
    「YOUスクリプトごと書いちゃえよ」ですよ。
    あるいはマクロなりの手順でも。
    さらにはたった1000なので、ドラッグしてA列に生成して、文字列としてペーストしたあとソートなりマクロ(ええとvlookup関数ですっけ)で…とかでもなんとかやれそうな気がしますね。わたしはやりませんけど!
  • id:NAPORIN
    リが行方不明>ブロスさん
  • id:rsc96074
    使ったら、駄目かと思ってました。(^_^;
    私も同じ結果を得ました。
    高度なテクニックは使いませんでした。
    いいブログネタができたのでそちらに飛ばしますね。(^_^;

  • id:a-kuma3
    プログラムを使ったのは、答え合わせ的な、でも良いかな、なんて。
    人力検索がさみしいので、回答でもプリーズ >rsc さん
  • id:a-kuma3
    酔いが醒めても (2) のアイデアは浮かばず。
    むぅ
  • id:libros
    3/12前後に締める予定です。
    別の解きかたを考え中、というかたがおられましたら延ばしますので、ご一報ください。
  • id:libros
    備忘のためにメモ。
    コマネチ大学数学科43講:ミッシングナンバー
    http://gascon.cocolog-nifty.com/blog/2007/04/43_844e.html
    ミッシングナンバー - イズミの数学
    http://izu-mix.com/math/others/comadai/042.html
    ミッシング・ナンバー - フナハシ学習塾
    http://homepage3.nifty.com/funahashi/suugaku/suu51.html
    入試数学 整数問題の基礎(8-14)
    http://iiaoki.jugem.jp/?eid=3623
  • id:libros
    終了いたしました。
    No.4の懇切丁寧な解説も素敵ですが、ベストアンサーはNo.5 usamin5885さんへ。巧みな手品のような、鮮やかな解きっぷりが魅力的でした。
    プログラミングで解いてくださったみなさまも、ありがとうございます。篤くお礼申し上げます。
  • id:libros
    余談。
    三崎亜記の短編に、市から七階をすべて撤去しようとする行政と、それに反対する少数の市民団体との闘いを描いた荒唐無稽な話があるのですが(『廃墟建築士』所収「七階闘争」)、それを読んで以来、日々の生活で4が欠けた駐車場や、13がないエレベータの階数表示を見ると、なんとも言えない喪失感と寂寥感に襲われるようになりました。
  • id:psne
    >除外しすぎた**13
    この部分が(この条件では)3つしかない という証明ができれば、もっと良い答えになると感じました。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません