pat 1049. Counting Ones (30)

看别人的题解懂了一些些    参考《编程之美》P132 页《1 的数目》

#include<iostream>

#include<stdio.h>

using namespace std;

int getone(int n)

{

	int ans=0,base=1,right,left,now;

	while(n/base)

	{

		right=n%base;

		left=n/(base*10);

		now=(n/base)%10;

		if(now==0)ans+=left*base;

		else

			if(now==1)ans+=left*base+right+1;

			else

				ans+=(left+1)*base;

         base*=10;

	}

	return ans;

}

int  main()

{

	int n;

	while(scanf("%d",&n)!=EOF)

	{

		printf("%d\n",getone(n));

	}

	return 0;

}


 

 

你可能感兴趣的:(count)