###二:有错误的打字机
题目描述:就是有一台数字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;
}
有时候,越是简单的题目越是难啊。浓缩就是精华,题目描述是节省了,但是剩下的能不能也浓缩一下。