• HDU 5504 GT and sequence 模拟


    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5504

    思路:模拟

    代码:

      1 #include<stdio.h>//------杭电5504
      2 #include<algorithm>
      3 #include<math.h>
      4 #include<iostream>
      5 using namespace std;
      6 int comp(const void*a, const void*b)
      7 {
      8     return *(int*)a - *(int*)b;
      9 }
     10 int main()
     11 {
     12     int t;
     13     scanf("%d", &t);
     14     while (t)
     15     {
     16         __int64 *a;
     17         int n;
     18         int count1 = 0;//记录负数
     19         int count2 = 0;//记录0
     20         int count3 = 0;//记录正数
     21         int i;
     22         __int64 result = 1;
     23         __int64 maxx = -0x3f3f3f3f;
     24         scanf("%d", &n);
     25         a = (__int64*)malloc(n*sizeof(__int64));
     26         for (i = 0; i < n; i++)
     27         {
     28             scanf("%I64d", (a + i));
     29             if (a[i] < 0)
     30             {
     31                 count1++;
     32                 maxx = max(maxx, a[i]);
     33             }
     34             else if (a[i]>0)
     35                 count3++;
     36             else
     37                 count2++;
     38         }
     39         qsort(a, n, sizeof(__int64), comp);//对数组排序
     40         if (count1 == 0)//没有负数
     41         {
     42             if (count3 != 0)
     43             {
     44                 if (count2 == 0)
     45                     i = 0;
     46                 else
     47                     i = count2;
     48                 for (i; i < n; i++)
     49                 {
     50                     result *= a[i];
     51                 }
     52             }
     53             else if (count3 == 0)//无正数
     54             {
     55                 result = 0;
     56             }
     57         }
     58         else if (count1 == 1)//只有一个负数
     59         {
     60             if (count3 != 0)
     61             {
     62                 if (count2 == 0)
     63                     i = 1;
     64                 else
     65                     i = count2 + count1;
     66                 for (i; i < n; i++)
     67                 {
     68                     result *= a[i];
     69                 }
     70             }
     71             else if (count3 == 0)//无正数
     72             {
     73                 if (count2 == 0)
     74                     result *= a[0];
     75                 else
     76                     result = 0;
     77             }
     78         }
     79         else if (count1 % 2 == 0)//偶数个负数
     80         {
     81             for (i = 0; i < count1; i++)
     82             {
     83                 result *= a[i];
     84             }
     85             if (count3 != 0)
     86             {
     87                 if (count2 == 0)
     88                     i = count1;
     89                 else
     90                     i = count2 + count1;
     91                 for (i; i < n; i++)
     92                 {
     93                     result *= a[i];
     94                 }
     95             }
     96             else if (count3 == 0)//无正数,值保留
     97             {
     98                 result = result;
     99             }
    100         }
    101         else if (count1 % 2 != 0)//奇数个负数
    102         {
    103             for (i = 0; i < count1-1; i++)
    104             {
    105                 result *= a[i];
    106             }
    107             if (count3 != 0)
    108             {
    109                 if (count2 == 0)
    110                     i = count1;
    111                 else
    112                     i = count2 + count1;
    113                 for (i; i < n; i++)
    114                 {
    115                     result *= a[i];
    116                 }
    117             }
    118             else if (count3 == 0)//无正数,值保留
    119             {
    120                 result = result;
    121             }
    122         }
    123         printf("%I64d
    ", result);
    124         t--;
    125     }
    126     return 0;
    127 }
    View Code
  • 相关阅读:
    php分页类 (来源网络)
    symfony2 symofny3中得到get post session cookies的方法
    symfony route参数
    Symfony2同步数据库的数据表
    mysql中SQL执行过程详解与用于预处理语句的SQL语法
    使用MySQL命令行新建用户并授予权限的方法
    抽象类和接口的区别
    Yaf 使用遇到的坑
    Mysql 常用引擎的特点及选择使用策略
    定时任务 Crontab命令 详解
  • 原文地址:https://www.cnblogs.com/lemonbiscuit/p/7776153.html
Copyright © 2020-2023  润新知