题目来源:http://116.56.140.75:8000/JudgeOnline/problem.php?id=1708
1708: 1的数目
时间限制: 1 Sec 内存限制: 64 MB题目描述
给定一个十进制正整数N,写下从1开始,到N的所有整数,然后统计一下其中出现的所有的“1”的个数。例如: N=2,写下1 ,2。这样只出现了1个“1”. N=12,我们会写下1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12。这样,1的个数是5。那么,给定已知的正整数N,你是否能给出N以内所有正整数中出现1的总数。
输入
首先输入一个正整数T(1<=T<=1000),表示一共有T组测试样例,接下来有T行输入,每行输入一个正整数N(1<=N<2147483647)。
输出
针对每个测试用例,输出N以内所有正整数出现1的总数,相邻的总数结果用一个回车分隔。
样例输入
4
1
11
15
99
样例输出
1
4
8
20
解析:可以考虑把数字分离出来
代码:
#include<iostream>
using namespace std;
int main()
{
int t;
cin >> t;
long long int count;
while (t--)
{
long long int n;
cin >> n;
count = 1;
int j;
for (long long int i = 10; i <= n; i++)
{
j = i;
while (j != 0)
{
if (j % 10 == 1)
count++;
j /= 10;
}
}
cout << count << endl;
}
}
/**************************************************************
Problem: 1708
User: 201730685257
Language: C++
Result: 正确
Time:0 ms
Memory:1484 kb
****************************************************************/