ベルク・カッツェ
111、222、・・・、999、1000で10か所
11・12、22、23、・・・88・89で8か所
989・990で1か所
19か所になりました。
   4月6日(木) 0:15:28     52331
Mr.ダンディ
11,12..22,23..33,34..44,45..55,56..66,67..77,78..88,89...
111.112...222...333.444..555.666...777...888..999...1000..
899,900
以上 19か所 (はじめ 最後の2か所を抜かしていました)
茨木市   4月6日(木) 0:17:52     52332
ベルク・カッツェ
□11・□12
11□・11▽
このパターンは□=1しかないので他にはないはずです。
   4月6日(木) 0:18:08     52333
ドリトル
000・・・(1000)
111・・・(11、12)、(111、112)
222・・・(22、23)、(222、223)
(中略)
888・・・(88、89)、(888、889)
999・・・(899、900)、(989、990)、(999)
で少なくとも20通りあると思うのですが、何か間違っているでしょうか・・・
   4月6日(木) 0:18:17     52334
CRYING DOLPHIN
区切る場所を考慮する桁ばらしがついに算チャレに上陸かぁ
顔上げた道の先   4月6日(木) 0:22:20   MAIL:ぴかー HomePage:ぴかぴかさんすう。  52335
Jママ
ドリトルさんが正しいと思います
私は989,990を抜かしておりました。
   4月6日(木) 0:22:59     52336
スモークマン
11/12
22/23
33/34
44/45
55/56
66/67
77/78
88/89

111/112
222/223
333/334
444/445
555/556
666/667
777/778
888/889
899/900
989/900
999
1000
そうか!!やっぱり8+12=20 ですね ^^;
2回目に12+9=21で送ったりしてましたけど...^^;;
   4月6日(木) 0:46:02     52337
スモークマン
989/990
の間違い ^^;;;
   4月6日(木) 0:47:21     52338
Mr.ダンディ
なるほど
989,990 もあったか...すると20か所が正解ですね。
茨木市   4月6日(木) 1:18:38     52339
みかん
注意すべきなのは
・桁をばらす前に複数の数にまたがっている部分(11、12)や(111、112)
・一の位が9→0に繰り上がるところ
なんだけど、やっぱり数え落としました。

単純な問題なんだけどけっこう間違える、という点ではいい問題ですね。
桁ばらし問題で
・1000個目の数字は何か?
・1000個目までの数字の和は?
・先頭からの数字の和が1000を超えるのは何個目の数字か?
は見かけるような気がするけれど、今回のようなのは見ないのはなぜなんでしょう。
「解法を知っていれば簡単、知らないと解けない」から? 

#52329
>断頭三角柱の公式は知ってること前提
今年の開成の問題がまさにそのパターン。「2回切断→ダブり部分を差引き」の
定石通りに解くなら、断頭三角形の公式が必要。知らなくても分割方法を変えれば
もちろん解けるけれど、知っていれば有利。出題側も「みんな塾で対策してきて
いるんだろ?」といったところかも。過去問の解説が公式前提で解説しているか
気になります。

三菱問題は灘の問題でしたか。出典が書いてあれば「さすが灘の問題、いい問題
だったね~」と当時は言っていただろうなぁ。初見では解けなかったので、完全に
負け惜しみなんですが。
   4月6日(木) 1:23:20     52340
ベルク・カッツェ
899・900がありましたか。見落としていました。
   4月6日(木) 1:48:20     52341
紫の薔薇の人
桁上がりの問題だから、ロジックが確定して、何とか書き出せる3進法
であたりをつける方法でないと見落としますね。

3進法

1
2
10
11
12★(10進法ならば、AA|AB型の8通りのパターン)
20
21
22
100
101
102
110
111
112★(10進法ならば、AAA|AAB型の8通りのパターン)
120
121
122
200★(10進法ならば、899|900の1通りのパターン)
201
202
210
211
212
220★(10進法ならば、989|990の1通りのパターン)
221
222★(10進法ならば、999の1通りのパターン)
1000★(10進法ならば、1000の1通りのパターン)

   4月6日(木) 3:14:29     52342
「数学」小旅行
#52341
同じく、やられました。
   4月6日(木) 7:08:37     52343
量子論
だいぶ前に20で送った気が....
ただ、不正解だったので なんでなん?
といろいろ考えてました。
まさかと思って、19にしたらここに入れました。
一応、19を送って正解の仲間に入っておきます。
   4月6日(木) 9:23:34     52344
ドリトル
やはり20でしたか。
マサルさんにこの掲示板を見て、正解を変更していただけるよう答えを再送信しておきました。
でもまだ19のままですね・・・
っていうか、最初3個「以上」を見逃していたのでもし答えが20になってもあまり順位良くないかな・・・(汗)
   4月6日(木) 9:49:57     52345
ベルク・カッツェ
改めて夕べの反省を。
繰上りがあるからその前後はしっかり確認すべきでした。
今回は□99ですね。
   4月6日(木) 12:36:56     52346
ゴンとも
1000までなく10000でも100000でも1億でもプログラムなら
根こそぎできると思いますが・・・
とりあえず1000まで十進Basic で 

FOR a=10 TO 97
LET b=IP(a/10)
LET c=10*FP(a/10)
LET d=IP((a+1)/10)
let e=10*fp((a+1)/10)
IF (b=c AND c=d) OR (c=d AND d=e) THEN PRINT a;a+1
next a
END

f9押して
11 12
22 23
33 34
44 45
55 56
66 67
77 78
88 89

FOR e=100 TO 996
LET f=IP(e/100)
LET g=(e-100*IP(e/100)-10*FP(e/10))/10
LET h=10*fp(e/10)
LET i=IP((e+1)/100)
LET j=(e+1-100*IP((e+1)/100)-10*FP((e+1)/10))/10
LET k=10*FP((e+1)/10)
IF (f=g AND g=h) OR (g=h AND h=i) OR (h=i AND i=j) THEN PRINT e;e+1
NEXT e
END

f9押して
111 112
222 223
333 334
444 445
555 556
666 667
777 778
888 889
899 900
989 990

と999 1000 で20個・・・・・・(答え)
豊川市   4月6日(木) 16:59:59   MAIL:fttnm528@ybb.ne.jp   52347
「数学」小旅行
出来合いですが、rubyで、
a=(1..1000).to_a.to_s.delete(", ")
p (0..9).map{|i|a.scan(i.to_s+i.to_s+i.to_s)}.flatten.count
で、20個です。
   4月6日(木) 17:09:54     52348
「数学」小旅行
#52348 でもこれは、同じ数字が6個以上並ぶところがあると間違った結果になるので注意です。
   4月6日(木) 17:18:07     52349
ゴンとも
#52347

自己レスですみません!!

>1000までなく10000でも100000でも1億でもプログラムなら
>根こそぎできると思いますが・・・
>とりあえず1000まで十進Basic で

4桁で十進Basic で

FOR l=1001 TO 9998
LET m=IP(l/1000)
LET n=(l-1000*IP(l/1000)-100*FP(l/100))/100
LET o=(l-100*IP(l/100)-10*FP(l/10))/10
LET p=10*fp(l/10)
LET q=IP((l+1)/1000)
LET r=(l+1-1000*IP((l+1)/1000)-100*FP((l+1)/100))/100
LET s=(l+1-100*IP((l+1)/100)-10*FP((l+1)/10))/10
LET t=10*fp((l+1)/10)
IF (m=n AND n=o AND o=p-1) THEN GOTO 10
IF (m=n AND n=o) OR (n=o AND o=p) OR (o=p AND p=q) OR (p=q AND q=r) THEN LET u=u+1
10 NEXT l
PRINT u+2
END

f9押して325より
10000(1万)までなら345でしょうか?
誰かやった人がいたらお願いします!!
とりあえず次は100000(10万)やってみます!!
豊川市   4月6日(木) 19:39:29   MAIL:fttnm528@ybb.ne.jp   52350
「数学」小旅行
#52350
a=(1..10000).to_a.to_s.delete(", ")
b=(0..9).map{|i|a.scan(i.to_s*9)}.flatten.count
c=(0..9).map{|i|a.scan(i.to_s*6)}.flatten.count
p (0..9).map{|i|a.scan(i.to_s*3)}.flatten.count-b-c

こんなふうにしてみたけど、・・・344がでました。??

100,000では、

a=(1..100000).to_a.to_s.delete(", ")
b=(0..9).map{|i|a.scan(i.to_s*9)}.flatten.count
c=(0..9).map{|i|a.scan(i.to_s*6)}.flatten.count
p (0..9).map{|i|a.scan(i.to_s*3)}.flatten.count-b-c

で4394がでました。??自信はなし。
   4月7日(金) 8:36:48     52351
ゴンとも
#52347
#52350
#52351

すみません自分の方が間違えで345でなく344でした!!
自分のコードで通り数でなく並べる数値をだして
9989 9990 9991 をつないで 998999909991で一箇所ダブルカウントで・・・
どうやら数値が大きくなると難易度があがり求めがたいんだと
わかりました!!ありがとうございました!!
豊川市   4月7日(金) 12:03:44   MAIL:fttnm528@ybb.ne.jp   52352
みかん
今回の問題、1~10000だと何回なのか? 

まずは1000~10000の場合を考えました。いずれも桁ばらしをする前に小さい数の
方を基準。

(1)0が3連続以上
1000、2000、3000、…10000 の10回

(2)1が3連続以上
 A、111□ の場合
 1110、1111、1112、…1119 の10回
 B、□□□1、11□□ の場合
 1101、1111、1121、…1191 の10回
 C、□□11、1□□□ の場合
 1011、1111、1211、…1911 の10回
 D、□111 の場合
 1111、2111、3111、…9111 の9回

ただし 「1111、1112」 のパターンを Aで2回、B~Dで各1回=5回
カウントしているので、ダブりを引いて
10+10+10+9-4=35回

(3)2~8が3連続以上 …(2)の場合と同様なので、35×7=245回

(4)9が3連続以上
 A、999□ の場合
 9990、9991、9992、…9999 の10回
 B、□□□9、99□□ の場合
 9899、9909、9919、…9989 の10回
 C、□□99、9□□□ の場合
 8999、9099、9199、…9899 の10回
 D、□999 の場合
 1999、2999、3999、…9999 の9回

ただし、
 「9999」を AとDで2回カウント
 「9989、9990」を AとBで2回カウント
 「9899、9900」を BとCで2回カウント
 「8999、9000」を CとDで2回カウント
しているので、ダブりを引いて
10+10+10+9-(1×4)=35回

(1)~(4)より、1000~10000の場合
10+35+245+35=325回

1~999の場合は19回と分かっているので、
325+19=344回、でどうでしょうか?
   4月7日(金) 12:50:37     52353
吉川 マサル
すみません、当初は「999まで」だったのを、えいや、と「1000まで」にしていたのを忘れて、そのままになっていました...。これから、修正いたします。m(_ _)m
会社とか   4月7日(金) 16:20:56   HomePage:アリーナ  52354
げほげほ
修正お疲れさまです。まず20を送って、順位表に載らないのを見て
即座に19を投げるという不躾なプレイングをしたことお詫びします。^^;

さて、贖罪というわけではありませんが
一般化を調べる流れっぽいので、自分もプログラムを書いてみました。
1からNまでを繋げた文字列で、同じ数字がK回以上続くカタマリを数えます。
(今回の問題の場合N=1000、K=3なので、CASE(1000,3)が対応します。)

<script>
function CASE(N, K){
let s="", ans=(N>=1&&K==1)?1:0;
for(let i=1; i<=N; i++){ s+=String(i); }
for(let i=0; i<s.length-K; i++){
if(s.charAt(i)==s.charAt(i+1)){ continue; }
let flag=true;
for(let j=1; j<K; j++){
if(s.charAt(i+j)!=s.charAt(i+j+1)){ flag=false; }
}
if(flag){ ans++; }
}
alert(ans);
}
CASE(1000, 3);
</script>

JavaScriptなので、メモ帳にコピペしてHTML形式で保存し、ブラウザで開けば
どなたでも使えます。CASE(1000, 3);の部分をいろいろ書き換えてみてください。

なお
CASE(1000, 3)の結果は20回
CASE(10000, 3)の結果は344回
CASE(100000, 3)の結果は4394回
CASE(1000000, 3)の結果は52994回
CASE(10000000, 3)の結果は619994回
になりました。

注:N=100000000は扱える文字列のサイズを超え、エラーします。
プププランド   4月7日(金) 17:33:55   HomePage:ツイッター  52355
syokyuhsya
パイソンプログラムで解いてみました。プログラムは
import re
a='1'
for i in range(2,1001):
a=a+str(i)
print(a)
match_list1=re.findall(r"1{3,}",a)
match_list2=re.findall(r"2{3,}",a)
match_list3=re.findall(r"3{3,}",a)
match_list4=re.findall(r"4{3,}",a)
match_list5=re.findall(r"5{3,}",a)
match_list6=re.findall(r"6{3,}",a)
match_list7=re.findall(r"7{3,}",a)
match_list8=re.findall(r"8{3,}",a)
match_list9=re.findall(r"9{3,}",a)
match_list0=re.findall(r"0{3,}",a)
print(match_list1)
print(match_list2)
print(match_list3)
print(match_list4)
print(match_list5)
print(match_list6)
print(match_list7)
print(match_list8)
print(match_list9)
print(match_list0)

   4月7日(金) 18:59:26     52356
手描き図面職人
インデントを忘れていました。
import re
a='1'
for i in range(2,1001):
  a=a+str(i)
a1=re.findall(r"1{3,}",a)
a2=re.findall(r"2{3,}",a)
a3=re.findall(r"3{3,}",a)
a4=re.findall(r"4{3,}",a)
a5=re.findall(r"5{3,}",a)
a6=re.findall(r"6{3,}",a)
a7=re.findall(r"7{3,}",a)
a8=re.findall(r"8{3,}",a)
a9=re.findall(r"9{3,}",a)
a0=re.findall(r"0{3,}",a)
answer=len(a1)+len(a2)+len(a3)+len(a4)+len(a5)+len(a6)+len(a7)+len(a8)+len(a9)+len(a0)
print(answer)
   4月7日(金) 20:22:58     52357
まーじまさーん
19と入力してここに入って初めて間違いに気付きました。出直します。
バランスを取らなくっちゃなぁ!!   4月7日(金) 21:34:22   HomePage:ツイッターで色々やっている  52358
手描き図面職人
プログラムにコメントを追加しました。
import re
a='1' # 巨大な整数aの制作
for i in range(2,1001):
a=a+str(i)
print(a) # 巨大な整数aを出力
a1=len(re.findall(r"1{3,}",a)) # aで整数1が3個以上連続する個数
a2=len(re.findall(r"2{3,}",a)) # aで整数2が3個以上連続する個数
a3=len(re.findall(r"3{3,}",a)) # aで整数3が3個以上連続する個数
a4=len(re.findall(r"4{3,}",a)) # aで整数4が3個以上連続する個数
a5=len(re.findall(r"5{3,}",a)) # aで整数5が3個以上連続する個数
a6=len(re.findall(r"6{3,}",a)) # aで整数6が3個以上連続する個数
a7=len(re.findall(r"7{3,}",a)) # aで整数7が3個以上連続する個数
a8=len(re.findall(r"8{3,}",a)) # aで整数8が3個以上連続する個数
a9=len(re.findall(r"9{3,}",a)) # aで整数9が3個以上連続する個数
a0=len(re.findall(r"0{3,}",a)) # aで数0が3個以上連続する個数
answer=a1+a2+a3+a4+a5+a6+a7+a8+a9+a0 # 以上の個数を合計
print(answer) # 合計した個数の出力

   4月8日(土) 15:59:26     52359
いちごみるく
c++で
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m; cin >> n >> m;
string s;
for (int i = 1; i < n + 1; ++i) s += to_string(i);
int ans = 0;
for (int i = 0; i < s.size();) {
int j = i + 1;
while ((j < s.size()) && (s[i] == s[j])) {
j++;
}
if (j - i >= m)ans++;
i = j;
}
cout << ans << endl;
return 0;
}
   4月8日(土) 18:26:35     52360
まるケン
先頭から1文字ずつ取り出して順次処理し、文字列がなくなったら次の数を付け足す、、、
というやり方で、100000000、1000000000 までを試してみました。
それぞれ、7099994回、79999994回 って出ました。
   4月9日(日) 18:42:26   MAIL:take4310@mobile.email.ne.jp   52361
「数学」小旅行
#52361 この手法(まるケンさんに感謝)をRubyでやると、

n=0;l=100000000;k=3;sl="0";c=1
for i in (1..l)
 s=i.to_s
  for j in (0..s.size-1)
   if sl!=s[j,1] then if c>=k then n+=1 end;sl=s[j,1];c=1
   else c+=1
   end
  end
end
if c>=k then n+=1 end

p n

7099994で、同じになりました。でもずいぶんと時間がかかりました。
   4月10日(月) 10:20:06     52362
「数学」小旅行
さらに、1000,000,000では、時間を計ってみました。
約3368秒すなわち約56分かかって、79999994を得ました。
もうやめておきます。
   4月10日(月) 11:07:52     52363
まるケン
そうそう、普通そこでやめるよね。
8時間ほどかけて、こんなん出ました。
10000000000, 889999994
さすがにもうやめます。
   4月10日(月) 18:45:17   MAIL:take4310@mobile.email.ne.jp   52364
手描き図面職人
chatgptにコピーアンドペーストしてみましたがやはり20という答えが、返ってきました。
   4月11日(火) 15:59:46     52365
いちごみるく
https://wandbox.org/permlink/mXELWOFordwuqG78
c++
10^7->一瞬
10^8->2788ms
10^9->30677ms
10^10->346171ms
   4月11日(火) 21:48:42     52366
まるケン
#52365
chatpgt、同じことしようとしましたが、エラーで試せず。
もしかして、人気沸騰中でアクセスが半端ないから?
   4月12日(水) 9:33:48   MAIL:take4310@mobile.email.ne.jp   52367
まるケン
#52367
さすが C++、早いですね!
もう一つ高速化の提案。
1から順に調べるのではなく、1000から逆順に調べる!!
で、比較対象は、その数を10で割った余りにすれば、数値⇒文字列の変換や文字列の長さを求める手間が減るかと思います。
Ruby レベルですが、数倍高速になりました。
   4月12日(水) 9:34:07   MAIL:take4310@mobile.email.ne.jp   52368
手描き図面職人
chatpgtの使い方ですが、エラーが出たら、一度ログアウトして再度ログインすれば、画面の左側に前の質問の答えがあります。
   4月12日(水) 9:58:24     52369
「数学」小旅行
#52368 なるほど!!! うまい!!!
   4月12日(水) 13:38:36     52370
「数学」小旅行
n=0;l=1000000000;k=3;sl="0";c=1
i=l
while i>=1
j=i
while j>=1
if sl!=j%10 then if c>=k then n+=1 end;sl=j%10;c=1
else c+=1
end
j=j/10
end
i-=1
end
if c>=k then n+=1 end

p n

ってやって、なんと、610秒、約10分になりました。
#52363 で、56分もかかったのに。。。

しかし、c++には遠く及ばず。。。約20倍!!
   4月12日(水) 15:53:27     52371
手描き図面職人
chatpgtの続きですが、左側に質問に該当する物が無い時は、新しいチャットをクリックして下さい。
   4月12日(水) 17:04:01     52372
いちごみるく
逆順でやってもほとんど速度変わりませんでした。
to_stringが遅そうだなとは思ってましたが、
除算も早くはないのでトントンなんですかね
https://wandbox.org/permlink/AZvQyHIy1QtMIoBF
   4月12日(水) 18:52:20     52373
手描き図面職人
chatgptが、図面問題に適用できるかどうか、チャレンジしてみたいと思います。
   4月12日(水) 19:41:37     52374