编程之美---1的个数 C++实现

来源:互联网 发布:麦当劳四川辣酱 知乎 编辑:程序博客网 时间:2024/06/04 20:09

方法1

#include "stdafx.h"#include <iostream>#include <time.h>using namespace std;int count(int n){int result=0;while(n!=0){if(n%10==1)result++;n/=10;}return result;}int total(int n){int sum=0;for(int i=1;i<=n;i++)sum+=count(i);return sum;}int _tmain(int argc, _TCHAR* argv[]){time_t t_start,t_end;t_start=time(NULL);cout<<total(10000000)<<endl;t_end=time(NULL);cout<<"耗时:"<<difftime(t_end,t_start)<<endl;system("pause");return 0;}

方法2

#include "stdafx.h"#include <iostream>#include <time.h>using namespace std;int total(int n){int count=0;int cur=0,low=0,high=0;int factor=1;while(n!=0){low=n-(n/factor)*factor;cur=(n/factor)%10;high=n/(factor*10);switch(cur){case 0:count+=high*factor;break;case 1:count+=high*factor+low+1;break;default:count+=(high+1)*factor;break;}factor*=10;n/=factor;}return count;}int _tmain(int argc, _TCHAR* argv[]){time_t t_start,t_end;t_start=time(NULL);cout<<total(100000000)<<endl;t_end=time(NULL);cout<<"耗时:"<<difftime(t_end,t_start)<<endl;system("pause");return 0;}



原创粉丝点击