二——有錯誤的打字機

###二:有錯誤的打字機

題目描述:就是有一臺數字3鍵壞了的打字機,要打數字。問從1 到n,有多少個數沒有被打出來。簡單一些,就是問你1~n中含3的數有幾個。

因爲數很大,所以還是要用高精度。

#include<bits/stdc++.h>
using namespace std;
int a[1100],b[1100];
int main()
{
	int n,m,k=0;
	cin>>n;
	a[n+1]=1;
	b[1]=1;
	for (int i=1;i<=n;i++)
	  for (int j=1;j<=1100;j++)//乘法 
	  {
		b[j]=b[j]*9+k;
		k=b[j]/10;
		b[j]%=10;
	  }
	for (int i=1;i<=n;i++)//減法 
	{
		a[i]=a[i]-b[i];
		if (a[i]<0)
		{
			a[i+1]--;
			a[i]+=10;
		}
	}
	m=1100;
	while (a[m]==0) m--;//處理開頭的零 
	for (int i=m;i>=1;i--) cout<<a[i];//輸出結果 
	cout<<endl;
	return 0;
}

有時候,越是簡單的題目越是難啊。濃縮就是精華,題目描述是節省了,但是剩下的能不能也濃縮一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章