ABC367D求助
  • 板块学术版
  • 楼主runtianxiaozi
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/8/17 21:44
  • 上次更新2024/8/18 09:30:35
查看原帖
ABC367D求助
1065612
runtianxiaozi楼主2024/8/17 21:44

题目大意:一个湖边有N个亭子,编号分别为1~N,从第i个亭子走到第i+1个亭子需要用a[i]秒(当i=N,i+1=1),每次只能从第i个亭子走到第i+1个亭子,现在问你从某个亭子走到另一个亭子中秒数是M的倍数的走法有几种。
我的0分代码(16点AC,48点TLE):

#include <bits/stdc++.h>
using namespace std;
#define int long long
int n, m, a[200001], sum;
signed main()
{
	cin >> n >> m;
	for (int i = 1; i <= n; i++)
		cin >> a[i];
	for (int i = 2; i <= n; i++)
		a[i] += a[i - 1];
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			if (i == j)continue;
			if (i < j)
			{
				if ((a[j - 1] - a[i - 1]) % m == 0)
				{
					sum++;
				}
			}
			else
			{
				if ((a[n] - a[i - 1] + a[j - 1]) % m == 0)
				{
					sum++;	
				}
			}
		}		
	}
	cout << sum;
	return 0;
}

求优化

2024/8/17 21:44
加载中...