プログラミングの美しさ---1の個数C++実現
1163 ワード
方法1
方法2
#include "stdafx.h"
#include
#include
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<
方法2
#include "stdafx.h"
#include
#include
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<