1的个数
问题描述
输入正整数n,判断从1到n之中,数字1一共要出现几次。例如1123这个数,则出现了两次1。例如15,那么从1到15之中,一共出现了8个1。
输入格式 一个正整数n
输出格式 一个整数,表示1出现的个数
样例输入 15
样例输出 8
数据规模和约定 n不超过30000
代码
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int hs(int x)
{
char c[6]={0};
int flag=0;
sprintf(c,"%d",x);//将数字转化为字符 ,详见参考文档
for(int i=0;i<6;i++)
if(c[i]=='1')flag++;
return flag;
} //定义函数,求一个数包含1的个数
int main()
{
int n,ans=0;
cin>>n;
for(n;n>0;n--)
ans+=hs(n);
cout<<ans;
return 0;
}