方法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;
}