网易2019实习生招聘题目 被3整除

题目

小Q得到一个神奇的数列: 1, 12, 123,…12345678910,1234567891011…。

并且小Q对于能否被3整除这个性质很感兴趣。

小Q现在希望你能帮他计算一下从数列的第l个到第r个(包含端点)有多少个数可以被3整除。

输入描述:
输入包括两个整数l和r(1 <= l <= r <= 1e9), 表示要求解的区间两端。

输出描述:
输出一个整数, 表示区间内能被3整除的数字个数。

输入例子1:
2 5

输出例子1:
3

例子说明1:
12, 123, 1234, 12345…
其中12, 123, 12345能被3整除。

代码

因为时间复杂度太高,只能通过50%的测试用例
这段代码的输出不是严格按照题目来的,为了方便理解,又画蛇添足了一下
按照题目要求的话,直接输出spaceFlag即可

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
int main()
{
	long int curNum = 1;

	int lastMin;
	int lastMax;

	if (scanf("%d %d", &lastMin, &lastMax) == EOF)
	{
		cout << endl;
		return 0;
	}

	int j;
	int jTemp;
	int sum = 0;
	int spaceFlag = 0;

	//统计总数
	for (curNum = lastMin; curNum <= lastMax; curNum++)
	{
		sum = 0;
		for (j = 1; j <= curNum; j++)
		{
			//cout << j;

			//在线余3防止溢出
			jTemp = j;
			jTemp %= 3;
			sum += jTemp;
			sum %= 3;
		}
		if (sum == 0)//如果能被3整除 flag++
		{
			spaceFlag++;
		}
	}
	cout << "一共" << spaceFlag++ << "个数" << endl;//歪打正着

	//逐个输出
	for (curNum = lastMin; curNum <= lastMax; curNum++)
	{
		sum = 0;
		for (j = 1; j <= curNum; j++)
		{
			//cout << j;

			//在线余3防止溢出
			jTemp = j;
			jTemp %= 3;
			sum += jTemp;
			sum %= 3;
		}
		if (sum == 0)//如果能被3整除 输出
		{
			spaceFlag--;
			for (j = 1; j <= curNum; j++)
			{
				cout << j;
			}
			if (spaceFlag != 0)cout << endl;
		}
	}
	system("pause");
	return 0;
}

运行效果

1 50
一共33个数
12
123
12345
123456
12345678
123456789
1234567891011
123456789101112
1234567891011121314
123456789101112131415
1234567891011121314151617
123456789101112131415161718
1234567891011121314151617181920
123456789101112131415161718192021
1234567891011121314151617181920212223
123456789101112131415161718192021222324
1234567891011121314151617181920212223242526
123456789101112131415161718192021222324252627
1234567891011121314151617181920212223242526272829
123456789101112131415161718192021222324252627282930
1234567891011121314151617181920212223242526272829303132
123456789101112131415161718192021222324252627282930313233
1234567891011121314151617181920212223242526272829303132333435
123456789101112131415161718192021222324252627282930313233343536
1234567891011121314151617181920212223242526272829303132333435363738
123456789101112131415161718192021222324252627282930313233343536373839
1234567891011121314151617181920212223242526272829303132333435363738394041
123456789101112131415161718192021222324252627282930313233343536373839404142
1234567891011121314151617181920212223242526272829303132333435363738394041424344
123456789101112131415161718192021222324252627282930313233343536373839404142434445
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
请按任意键继续. . .

猜你喜欢

转载自blog.csdn.net/sinat_42483341/article/details/88234120