zoukankan      html  css  js  c++  java
  • POJ 2356 Find a multiple

    Find a multiple

    Time Limit: 1000ms
    Memory Limit: 65536KB
    This problem will be judged on PKU. Original ID: 2356
    64-bit integer IO format: %lld      Java class name: Main
     
    The input contains N natural (i.e. positive integer) numbers ( N <= 10000 ). Each of that numbers is not greater than 15000. This numbers are not necessarily different (so it may happen that two or more of them will be equal). Your task is to choose a few of given numbers ( 1 <= few <= N ) so that the sum of chosen numbers is multiple for N (i.e. N * k = (sum of chosen numbers) for some natural number k).
     

    Input

    The first line of the input contains the single number N. Each of next N lines contains one number from the given set.
     

    Output

    In case your program decides that the target set of numbers can not be found it should print to the output the single number 0. Otherwise it should print the number of the chosen numbers in the first line followed by the chosen numbers themselves (on a separate line each) in arbitrary order. 

    If there are more than one set of numbers with required properties you should print to the output only one (preferably your favorite) of them.
     

    Sample Input

    5
    1
    2
    3
    4
    1
    

    Sample Output

    2
    2
    3
    

    Source

     
    解题:抽屉原理
     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 using namespace std;
     5 const int maxn = 10010;
     6 int a[maxn],pos[maxn],n;
     7 int main() {
     8     while(~scanf("%d",&n)) {
     9         memset(pos,-1,sizeof pos);
    10         bool flag = true;
    11         int sum = pos[0] = 0;
    12         for(int i = 1; i <= n; ++i) {
    13             scanf("%d",a + i);
    14             sum = (sum + a[i])%n;
    15             if(pos[sum] > -1 && flag) {
    16                 printf("%d
    ", i - pos[sum]);
    17                 for(int j = pos[sum] + 1; j <= i; ++j)
    18                     printf("%d
    ",a[j]);
    19                 flag = false;
    20             }
    21             pos[sum] = i;
    22         }
    23     }
    24     return 0;
    25 }
    View Code
  • 相关阅读:
    SAP 是不是很烂的一个ERP软件
    Linux 的目录树
    LINUX连接外网的安全问题(查看日志)
    硬盘概念:柱面、磁道、扇区、簇
    Linux下安装PHP pdo_mysql支持
    端口映射帮助文档
    怎么建设一个FTP服务器
    linux开启telnet服务
    CentOS yum的详细使用方法
    WinXP SSH连接不上虚拟机的解决方法
  • 原文地址:https://www.cnblogs.com/crackpotisback/p/4850893.html
Copyright © 2011-2022 走看看