蓝桥杯(刷题统计,特别数的和 C++)

蓝桥杯(刷题统计,特别数的和 C++)_第1张图片

思路:

1、这题很简单,分两种情况累加和 ,(day%6==0||day%7==0)即周六周天加上b,其它时候加上a。

2、注意的点在于数据可能达到10^{18},所以数据类型首先要开long long。

3、因为数据达到10^{18},所以直接用while循环一天一天,会超时。所以要先去算需要几周,再算还要多少天,这可以大大减少时间损耗。

#include
using namespace std;
int main()
{
	long long a, b, n;
	cin >> a >> b >> n;
	long long week = n / (5 * a + 2 * b);
	long long sum = week * (5 * a + 2 * b);
	long long day = week * 7;
	while (sum < n)
	{
		day++;
		if (day % 6 == 0 || day % 7 == 0)
			sum += b;
		else
			sum += a;
	}
	cout << day;
}

蓝桥杯(刷题统计,特别数的和 C++)_第2张图片

 思路:

1、这题也是累加和。

2、取每个数的各个位数,其中只要包含0、1、2、9其中的任意一个,就加起来。

#include
using namespace std;
int judge(int n)
{
	int flag = 0;
	while (n)
	{
		int a = n % 10;
		n /= 10;
		if (a == 0 || a == 1 || a == 2 || a == 9)
		{
			flag = 1;
			break;
		}
	}
	return flag;
}
int main()
{
	int n,sum=0;
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		int a=judge(i);
		if (a == 1)
			sum += i;
	}
	cout << sum;
}

你可能感兴趣的:(蓝桥杯,蓝桥杯,职场和发展)