poj 3370
和2356思路几乎相同,注意本题能使用的条件是因为c <= n
//============================================================================ // Name : 3370.cpp // Author : // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //============================================================================ #include <iostream> #include <cstdio> #include <cstring> using namespace std; int n, num; long long sum[100010]; int a[100010], flag[100010], from[100010]; int main() { while(scanf("%d%d", &n, &num)&&(n||num)){ memset(flag, 0, sizeof(flag)); for(int i = 1;i <= num;i++){ scanf("%d\n", &a[i]); sum[i] = sum[i-1]+a[i]; } for(int i = 1;i <= num;i++){ if(sum[i]%n == 0){ for(int j = 1;j < i;j++){ printf("%d ", j); } printf("%d\n", i); break; } else{ if(flag[sum[i]%n] == 0){ flag[sum[i]%n] = 1; from[sum[i]%n] = i; } else{ for(int j = from[sum[i]%n]+1;j < i;j++){ printf("%d ", j); } printf("%d\n", i); break; } } } } return 0; }