「覚え間違い」を教えてください!

上記にも書きましたが1から1000までのあいだ1は何回出るんですか?

出来るだけわかりやすく書いていただけると助かります!!

A 回答 (12件中1~10件)

1,2,3,4,5,6,7,8,9,10,11,…999,1000と書いたときに「1」という数字を何回書くかという意味ならば以下の通りです。



一の位 1、11、21、31、…991まで10おきに100回
十の位 10から19までは連続10回、それ以後も910から919まで100おきに連続10回ずつなので合計100回
百の位 100から199までは連続100回 それ以後はないので100回
千の位 1000の1回だけ

合計 100+100+100+1=301 答え301回
    • good
    • 8
この回答へのお礼

みなさん回答有り難う御座います。
一番、自分とってわかりやすかったこの回答をベストアンサーにさせていただきます。

みなさんの回答はほんとに役に立ちました!

ありがとうございます。

お礼日時:2012/11/18 20:55

 ANo.1です。



>どうしてそのようになるのですか?

 その補足要求を書き込まれるよりも前に投稿したANo.9で説明済みです。
    • good
    • 4

簡単です。

1~9の間に1は1個。999までの間でそれらが100回繰り返されるので、1の桁では100個。
同様に、10の桁では99までの間に10回現れる。999までの間では、その10倍だから、100個。
100の桁では、999までの間に100~199の100しか該当しない。従って、100個。

これに1000の1個を足し合わせれば、301個という風に容易に出てくる。
    • good
    • 5

情報工学科の学生です。


1~1000までカウントするときに1を何回書くかという題意なら、以下のCプログラムで求められます。
例:715の場合 %は余りを求める演算、/は商を求める演算です。
715 % 10 = 5
715 / 10 = 71
71 % 10 = 1 ⇒ cntを1増やす
71 / 10 = 7
7 % 10 = 7
7 / 10 = 0 ⇒ 次の数716について行う

#include<stdio.h>
#define N 1000

int main(void){
int i,j,cnt = 0;
for(i=1;i<=N;i++){
for(j = i;j>0;j/=10){
if(j % 10 == 1)
cnt ++;
}
}
printf("cnt = %d\n",cnt);
return 0;
}

出力結果は、
cnt = 301
となりました。
    • good
    • 1

 1の位に1が1になっている数字は、



1、11、21、31、・・・991

という具合に、10個の数字毎に1個ずつですから、1から1000までの間には、

1000÷10=100

で、100個の数字が1の位が1になっている事になります。
 次に、10の位が1になっている数字は、

10、11、12、・・・19、110、111、112、・・・119、210、211、212、・・・219、310、311、312、・・・・・919

という具合に、100個の数字毎に10個ずつですが、その中で末尾が11となっているものは、既に「1の位に1が現れる数字」としてカウント済みですから、重複して数える訳にはいきません。
 そこで、「『10の位が1』で『1の位が1ではない』」数字に関して考えますと、100個の数字毎に9個ずつある事になりますので、1から1000までの間には、

(1000÷100)×9=90

で、90個ある事になります。
 そして、100の位が1になっている数字は、100から199までの100個の数字ですが、この内、

100÷10=10

の10個の数字は1の位が1になっていますし、

110、112、・・・119

の9個の数字は「『10の位が1』で『1の位が1ではない』」数字なのですから、重複して数える訳にはいきません。
 ですから、「『100の位が1』で『1の位や10の位が1ではない』」数字の個数は

100-100÷10-9=100-10-9=81

で、81個ある事が判ります。
 最後の数である1000もまた1を含んでいて、未だカウントに入れていない数です。
 従って、1から1000までの間で、1を含んでいる数の個数は、

1000÷10+(1000÷100)×9+100-100÷10-9+1=100+90+81+1=272

で、272個ある事が判ります。
    • good
    • 3

まず0~999まで考えます。



(1)1が一つしか出てこない数
(1)一の位に1がでてくる数
 十・百の位にある数が1以外の場合をすべて数える。
 十の位、百の位共に、0,2,3,4,5,6,7,8,9の9通りの場合があるので、
 9×9=81個
(2)十の位に1が出てくる数
 (1)の説明の「十・百」を「一・百」におきかえて説明すればよし。
 よって同様に81個
(3)百の位に1が出てくる数
 (2)と同様。
 81個
よって、1が一つしか出てこない数は243個・・・(a)

(2)1が二つ出てくる数
(1)一と十の位に1がある数
 百の位に1以外の数がある場合をすべて数える。
 百の位に出てくる数は0,2,3,4,5,6,7,8,9の9通りの場合があるので、
 9個
(2)一と百の位に1がある数
 (1)と同様。
 9個
(3)十と百の位に1がある数
 (1)、(2)と同様
 9個
よって、1が二つ出てくる数は27個・・・(b)

(3)1が三つ出てくる数
 111のみ。
寄って、1が三つ出てくる数は1個・・・(c)

1が出てくる総数をかぞえるので、
 (a)×1+(b)×2+(c)×3
=243×1+27×2+1×3
=300

最後に1000の1個を足して

答え・・・301個

どうでしょうか?
    • good
    • 3

すみません。

間違ってました。
千の桁では1回。
百の桁では100回。
十の桁では10から99の間に10回。これが10回繰り返されるので、100回。
一の桁では1から9の間に1回出て、それが100回繰り返されるので100回。従って301回です。
    • good
    • 0

000


001
002
・・・
999

この1000個の数の中では0~9の数字は同じ回数だけ出現しているから、1が出る回数は、
1000×3/10=300

これに「1000」の1回を加えて、301回
    • good
    • 1

1の位には10ごとに1回出ます。


10の位には100ごとに10回出ます。
100の位には1000ごとに100回出ます。
1000の位には最後に1回だけ出ます。

だから301回じゃないでしょうか。
確かめてないんですが。
    • good
    • 1

千の桁では一回。


百の桁では一回。
十の桁では10から99の間に九回。これが10回繰り返されるので、90回。
一の桁では一回出て、それが100回繰り返されるので100回。従って192回です。

ただ、数字の11が出た場合1が2回出たとした場合の計算です。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報