统计数字问题

来源:互联网 发布:杭州十大淘宝摄影机构 编辑:程序博客网 时间:2024/06/05 11:19

题目:


代码:

#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时,将会运行很长时间。因此此算法需要优化。



原创粉丝点击