zoukankan      html  css  js  c++  java
  • 51nod——T1103 N的倍数

    题目来源: Ural 1302
    基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题
     收藏
     关注
    一个长度为N的数组A,从A中选出若干个数,使得这些数的和是N的倍数。
    例如:N = 8,数组A包括:2 5 6 3 18 7 11 19,可以选2 6,因为2 + 6 = 8,是8的倍数。
     
    Input
    第1行:1个数N,N为数组的长度,同时也是要求的倍数。(2 <= N <= 50000)
    第2 - N + 1行:数组A的元素。(0 < A[i] <= 10^9)
    Output
    如果没有符合条件的组合,输出No Solution。
    第1行:1个数S表示你所选择的数的数量。
    第2 - S + 1行:每行1个数,对应你所选择的数。
    Input示例
    8
    2
    5
    6
    3
    18
    7
    11
    19
    Output示例
    2
    2
    6

     1 #include <algorithm>
     2 #include <cstdio>
     3 
     4 using namespace std;
     5 
     6 int n;
     7 int num[50005];
     8 int sum_mod[50005];
     9 long long sum[50005];
    10 
    11 int main()
    12 {
    13     scanf("%d",&n);
    14     for(int i=1;i<=n;i++)
    15     {
    16         scanf("%d",&num[i]);
    17         sum[i]=sum[i-1]+num[i];
    18         sum_mod[i]=sum[i]%n;
    19         if(!sum_mod[i])
    20         {
    21             printf("%d
    ",i);
    22             for(int j=1;j<=i;j++)
    23                 printf("%d
    ",num[j]);
    24             return 0;
    25         }
    26     }
    27     for(int i=1;i<n;i++)
    28         for(int j=i+1;j<=n;j++)
    29             if(sum_mod[i]==sum_mod[j])
    30             {
    31                 printf("%d
    ",j-i);
    32                 for(int k=i+1;k<=j;k++)
    33                     printf("%d
    ",num[k]);
    34                 return 0;
    35             }
    36     printf("No Solution");
    37     return 0;
    38 }
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    进程间通信之数据共享--共享内存
    进程间通信之分工协作-信号灯
    进程间通信之分工协作--锁
    进程间通信之事件通知--信号
    进程间通信之数据传输--Socket
    c++模板特化
    DAG模型:嵌套矩形
    数字三角形
    c柔性数组结构成员
    模板
  • 原文地址:https://www.cnblogs.com/Shy-key/p/6719722.html
Copyright © 2011-2022 走看看