【题目描述】
给定一个十进制正整数n(1≤n≤10000)𝑛(1≤𝑛≤10000),写下从11到n𝑛的所有整数,然后数一下其中出现的数字“1
”的个数。
例如当n=2𝑛=2时,写下1,21,2。这样只出现了11个“1
”;当n=12𝑛=12时,写下1,2,3,4,5,6,7,8,9,10,11,121,2,3,4,5,6,7,8,9,10,11,12。这样出现了55个“1
”。
【输入】
正整数n𝑛。1≤n≤100001≤𝑛≤10000。
【输出】
一个正整数,即“1
”的个数。
【输入样例】
12
【输出样例】
5
这道题,可以先遍历每个数的位数,再判断各个数位是否为一,如果为一,计数器++
代码如下
#include<bits/stdc++.h>
using namespace std;
int n;
int sum;
int get_length(int z) //遍历位数
{
int length=0;
while(z)
{
z/=10;
length++;
}
return length;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
{
int a=10;
int b=1;
int m=get_length(i);
for(int j=1;j<=m;j++)
{
if(i%a/b==1) sum++; //判断各个数位是否为一
a*=10;
b*=10;
}
}
cout<<sum;
return 0;
}
此代码仅供参考,请勿纯抄