文章
19
粉丝
69
获赞
100
访问
29.7k
 
#include <bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	cin >> n; // 输入询问次数
	vector<long long> dp(1001);
	dp[0] = 0;
	dp[1] = 1;
	// 避免重复计算每行的细菌数量
	for (int i = 2; i <= 1000; i++)
	{
		dp[i] = 2 * i - 1;
	}
	// 使用前缀和避免重复计算对于每次询问时的细菌数量
	vector<long long> prefix(1001);
	prefix[0] = 0;
	for (int i = 1; i <= 1000; i++)
	{
		prefix[i] = prefix[i - 1] + dp[i];
	}
	// 对于每次询问
	while (n--)
	{
		long long sum = 0;
		int x;
		cin >> x;
		if (x == 0)
		{
			cout << 1 << endl;
		}
		else
		{
			sum = prefix[x - 1] * 2 + dp[x];
			cout << sum << endl;
		}
	}
	return 0;
}
也可以直接总结数学规律,推导出每一天细菌数量的数学公式,参考代码如下。
#include <bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	cin >> n;
	while (n--)
	{
		int x;
		cin >> x;
		cout << 2 * pow(x, 2) - 2 * x + 1 << endl;
	}
	return 0;
}
登录后发布评论
暂无评论,来抢沙发