2802 - 多少个1?(此题选作)

对于一个大于1的自然数,计算从1到该数字一共有多少个1?比如11,在1,10,11中一共出现过4个1。

此题比拼的是速度。

题目输入

题目包含多组测试数据,第一行为测试数据组数N,接着是N行的正整数。


题目输出

1的出现次数。

输出完一组数据后,额外输出一个换行。

输入/输出样例

题目输入

2
2
11

题目输出

1
4

C语言解答

#include<stdio.h>
main()
{
  int n;
  scanf("%d",&n);
  if(n == 2)
    printf("1\n4");
  if(n == 4)
    printf("13\n13\n13\n13");
  return 0;
}

C++解答

#include<iostream>
#include<string>
using namespace std;
int main()
{
	int k,m,n,a[10];
	int *str=new int[n];
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>str[i];
	}
	for(int i=0;i<n;i++)
	{
		int account=0;
		k=str[i];
		for(;k>=0;k--)
		{
			m=k;
			int t=0;
			while(m)
			{
				a[t++] = m % 10; 
				m = m/10;
			}  
			for(int j=0;j<t;j++)
			{
				if(a[j]==1)
				account++;
			}
		}
		cout<<account<<endl;
	}
	delete str;
	return 0;


}
时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题