zoukankan      html  css  js  c++  java
  • POJ 2356

    鸽笼原理题,以后得好好研究下相关题目。

     1 /*
     2 ID:esxgx1
     3 LANG:C++
     4 PROG:poj2356
     5 */
     6 #include <cstdio>
     7 #include <cstring>
     8 #include <iostream>
     9 #include <algorithm>
    10 using namespace std;
    11 
    12 #define NN    10007
    13 
    14 int _sum[NN], *sum = &_sum[1];
    15 int lookup[NN];
    16 
    17 int main(void)
    18 {
    19     #ifndef ONLINE_JUDGE
    20     freopen("in.txt", "r", stdin);
    21     #endif
    22 
    23     int N, i;
    24     scanf("%d", &N);
    25     sum[-1] = 0;
    26     for(i=0; i<N; ++i) {
    27         int k;
    28         scanf("%d", &k);
    29         sum[i] = sum[i-1] + k;
    30         if (lookup[sum[i] % N]) k = lookup[sum[i]  % N];
    31         else if (!(sum[i] % N)) k = 0;
    32         else k = -1;
    33 
    34         if (k >= 0) {
    35             printf("%d
    ", i-k+1);
    36             while(k <= i) {
    37                 printf("%d
    ", sum[k] - sum[k-1]);
    38                 ++k;
    39             }
    40             break;
    41         } else lookup[sum[i] % N] = i+1;
    42     } 
    43     if (i >= N) printf("0
    ");
    44     return 0;
    45 }
    2356 Accepted 744K 94MS G++ 751B 2014-07-29 08:35:46
  • 相关阅读:
    函数配接器
    函数对象和函数指针
    unary_function 和 binary_function
    堆排序
    Shell排序
    volatile理解
    死锁
    进程间通信
    优化循环的方法-循环展开
    如何学习编译原理
  • 原文地址:https://www.cnblogs.com/e0e1e/p/poj_2356.html
Copyright © 2011-2022 走看看