ページ 1 / 1
1からXまでの数値の中で、特定の数値の数を計測する方法
Posted: 2015年12月14日(月) 23:41
by ピーちゃん
C言語のプログラミングを勉強しています。
参考書の、for文の使い方の章で「1からXまでの数値の中で、特定の数値の数(=今回は1)を計測する」という問題があり組んでみました。
一応、答案通りにはなりましたが、改善案を教えて欲しいと思い投稿しました。
添削をお願いしたいです。
コード:
#include <stdio.h>
int main(void)
{
int len = 0;
int i;
int count = 0;
scanf("%d", &len);
for(i = 1; i <= len; i++)
{
if(i / 10 == 1)
{
count++;
}
if(i % 10 == 1)
{
count++;
}
}
printf("\n%d\n", count);
return 0;
}
よろしくお願いします。
Re: 1からXまでの数値の中で、特定の数値の数を計測する方法
Posted: 2015年12月14日(月) 23:56
by みけCAT
これは、
Integer in Integer | Aizu Online Judge
の特殊な場合に近いですね。(定数で割った余りではなく、数そのものを求めるという点が異なりますが)
動的計画法またはメモ化再帰を使い、工夫すると計算量を落とせるでしょう。
この問題の自分の答案
上限・下限値の処理に気をつけながら、クエリの数を探し、見つかったらその後の数のパターン数を求め、加算するという方針です。
Re: 1からXまでの数値の中で、特定の数値の数を計測する方法
Posted: 2015年12月15日(火) 00:20
by box
Xが100以上の場合、正しい答えを得ますか?
どうも2桁以内だけに対応しているように見えて仕方がありません。
見間違いかな?
Re: 1からXまでの数値の中で、特定の数値の数を計測する方法
Posted: 2015年12月18日(金) 23:20
by ピーちゃん
99までしか対応していないのは、参考書の入力例には2ケタしかなかったためです。
そう記載すればよかったですが、忘れていました、すみません・・・。
ありがとうございます!