hdu 1808
題目大意:
已知no sweets
;
思路:
記錄前綴和的取模
存在
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cstdlib>
#define N 100005
#define LL __int64
using namespace std;
struct node
{
int rem;
int p;
}re[N];
int a[N];
bool cmp(node s, node t)
{
if (s.rem == t.rem)
{
return s.p < t.p;
}
return s.rem < t.rem;
}
int main()
{
int p, n;
while (~scanf("%d%d", &p, &n) && (n || p))
{
int pi = -1;
LL sum = 0;
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
sum += a[i];
re[i].rem = sum % p;
re[i].p = i + 1;
if (re[i].rem == 0 && pi == -1)
{
pi = i;
}
}
if (pi == -1)
{
sort(re, re + n, cmp);
int pi_2;
for (int i = 0; i < n - 1; i++)
{
if (pi == -1 && re[i].rem == re[i + 1].rem)
{
pi = re[i].p;
pi_2 = re[i+1].p;
break;
}
}
if (pi == -1)
{
printf("no sweets\n");
}
else
{
for (int i = pi + 1; i < pi_2; i++)
{
printf("%d ", i);
}
printf("%d\n", pi_2);
}
}
else
{
for (int i = 0; i < pi; i++)
{
printf("%d ", i + 1);
}
printf("%d\n", pi + 1);
}
}
}