B.CQWの強情さ

963 ワード

B.CQWの強情さ
時間制限:C/C++1000 ms;Java 2000 msメモリ制限:65535 KB
 
問題の説明
LCHとLPFは大学の覇者で、毎日いくつかの深い問題を討論しています.ディリクレイのような簡単なものは、彼らは全然顧みません.CQWは有名な学滓ですが、学滓にも向上心がありますね.彼は天道の報酬を信じています.彼が努力さえすれば、LCHとLPFに間に合います.ある道は、必ず努力して、努力した后で、やっと自分が本当にだめだと理解することができます.CQWはLCHとLPFの討論が終わった後、彼らが出かける間に、彼は彼らが使っている原稿を盗んだ!CQWは宝を手に入れたように、すぐに彼らの討論のテーマを研究し始めて、紙の上で突然いくつかの大きな字が現れます:1つの整数nを与えて、1-nのすべての数字の中で全部で何個の9が現れたかを出してください.
説明の入力
整数n(1<=n<=1000000)を含む.
出力の説明
9の出現回数を表す整数を出力します.
サンプル入力
100

サンプル出力
20

ソース
CQW
ヒント
19934に2つの9が現れました
問題を解く構想:表を打つ、動的に計画する
#include
using namespace std;
typedef long long ll;
ll d[1000010];
int main(){
	memset(d,0,sizeof(d));
	int x;
	cin>>x;
	for(int i=1;i<=1000000;i++){
		int ii=i;
		while(ii){
			int a=ii%10;
			if(a==9){
				d[i]++;
			}
			ii/=10;
		}
		d[i]+=d[i-1];
	}
	cout<