1からXまでの数値の中で、特定の数値の数を計測する方法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ピーちゃん

1からXまでの数値の中で、特定の数値の数を計測する方法

#1

投稿記事 by ピーちゃん » 9年前

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;
}
よろしくお願いします。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 1からXまでの数値の中で、特定の数値の数を計測する方法

#2

投稿記事 by みけCAT » 9年前

これは、Integer in Integer | Aizu Online Judge
の特殊な場合に近いですね。(定数で割った余りではなく、数そのものを求めるという点が異なりますが)
動的計画法またはメモ化再帰を使い、工夫すると計算量を落とせるでしょう。

この問題の自分の答案
上限・下限値の処理に気をつけながら、クエリの数を探し、見つかったらその後の数のパターン数を求め、加算するという方針です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

box
記事: 2002
登録日時: 14年前

Re: 1からXまでの数値の中で、特定の数値の数を計測する方法

#3

投稿記事 by box » 9年前

Xが100以上の場合、正しい答えを得ますか?
どうも2桁以内だけに対応しているように見えて仕方がありません。
見間違いかな?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

ピーちゃん

Re: 1からXまでの数値の中で、特定の数値の数を計測する方法

#4

投稿記事 by ピーちゃん » 9年前

99までしか対応していないのは、参考書の入力例には2ケタしかなかったためです。
そう記載すればよかったですが、忘れていました、すみません・・・。

ありがとうございます!

閉鎖

“C言語何でも質問掲示板” へ戻る