试题 算法训练 1的个数
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
输入正整数n,判断从1到n之中,数字1一共要出现几次。例如1123这个数,则出现了两次1。例如15,那么从1到15之中,一共出现了8个1。
输入格式
一个正整数n
输出格式
一个整数,表示1出现的资料
样例输入
15
样例输出
8
数据规模和约定
n不超过30000
思路:
从1开始到n,先赋值给c(因为后面要做除法),while循环c不等于0,然后判断c%10如果等于1就代表尾数为1,sum就加一,否则不加,然后对c除以十,循环,直至c等于0跳出循环开始下一个。
最后输出sum;
#include<iostream>
using namespace std;
int main(){
int a,sum=0;
cin>>a;
for(int i=1;i<=a;i++){
int c=i;
while(c!=0){
if(c%10==1){
sum++;
}
c=c/10;
}
}
cout<<sum;
}