文章
19
粉丝
69
获赞
30
访问
18.9k
#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;
}
登录后发布评论
暂无评论,来抢沙发