您的位置:首页 > 其它

统计数字问题

2017-09-20 10:39 288 查看
题目:



代码:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;

int num;
int a[10]={0};
int f()
{
for(int i=1;i<=num;i++)
{
int t=i;
while(t)
{
a[t%10]++;
t/=10;
}
}
cout<<"页码数目为:"<<num<<endl;
for(int i=0;i<10;i++)
cout<<i<<"\t"<<a[i]<<endl;
}
int main()
{
FILE *fp1=fopen("input.txt","r");
FILE *fp2=fopen("output.txt","w");

char text[10];
while(fgets(text,10,fp1)!=NULL);
num=atoi(text);
cout<<num<<endl;
f();
for(int i=0;i<10;i++)
{
char t[10];
sprintf(t,"%d\t%d\n",i,a[i]);
fputs(t,fp2);
}
fclose(fp1);
fclose(fp2);
}
然而,此算法时间复杂度高。当n=10e9时,将会运行很长时间。因此此算法需要优化。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: