例如,求1到10000这10000个数字中一共有多少个1
思路如下:一般首先会想到从一遍历到10000,让后把每个数字中1的个数找出来,这样就必须要解决把每个数的个位,十位,百位都分离出来,这有点麻烦。所以我们改进一下数位分离的方法:就是对一个数,每次都去掉个位上的数字。
具体代码如下:
#include <iostream>
using namespace std;
int main()
{
int x=0;
int i,m;
for( i=1; i<=10000; i++)
{
int j=i;//用j来记录数字
while(j>0)
{
m=j%10;//每次求出来的都是个位上的数字
if(m==1)
{
x++;
}
j=j/10;//把个位上的数字去掉
}
}
cout<<x;
return 0;
}
#include<iostream>
using namespace std;
int main()
{
int x=0;
int i;
for( i=1;i<=9999;i++)
{
int j=i;
while(j!=0)
{
if(j%10==1)
x++;
j=j/10;
}
if(x==2021)
break;
}
cout<<i<<endl;
}
可能有不对或者需要改进的地方,还希望大家多多指教。