题目描述
zc去参加抽奖活动,在抽奖箱里有n个球,每个球上写着一个数字。一次抽取两个球,得分为两个球上的数的乘积。为了中大奖,zc想要知道他能得到的最大得分为多少。
输入
第一行为T,代表样例数。(1<=T<=10)
其中每组样例,第一个数为n,代表球的数量,接下来n个数s1,s2…,sn,代表球上的数字。(2<=n<=1e5,-4e9<=bi<=4e9)

输出
每组样例输出一行,输出一个数,代表zc得到的最大得分。(保证最大得分不小于0)
样例输入

2
3
1 2 3
3
-1 0 1

样例输出

6
0

AC代码

  1. #include<cstdio>
  2. #include<algorithm>
  3. #include<iostream>
  4. #include<cstring>
  5. using namespace std;
  6. typedef long long ll;
  7. const int M=;
  8. ll aa[],bb[],sum[];
  9. ll aa1[],bb1[],sum1[];
  10. ll a[M];
  11. int main()
  12. {
  13. ll n,T;
  14. cin>>T;
  15. while(T--)
  16. {
  17. cin>>n;
  18. ll i,j=,k=,p=,l=,l1=,l2=,l3=,l4=,lp=;
  19. memset(a,,sizeof(a));
  20. memset(aa,,sizeof(aa));
  21. memset(bb,,sizeof(bb));
  22. memset(sum,,sizeof(sum));
  23. memset(aa1,,sizeof(aa1));
  24. memset(bb1,,sizeof(bb1));
  25. memset(sum1,,sizeof(sum1));
  26. for(i=;i<n;i++)
  27. scanf("%lld",&a[i]);
  28. ll Max1=-,Max2=-,Min1=,Min2=;
  29. for(i=;i<n;i++)
  30. {
  31. if(Max1<a[i])
  32. {
  33. k=i;
  34. Max1=a[i];
  35. }
  36. if(Min1>a[i])
  37. {
  38. p=i;
  39. Min1=a[i];
  40. }
  41. }
  42. for(i=;i<n;i++)
  43. {
  44. if(i!=k)
  45. {
  46. if(Max2<a[i])
  47. Max2=a[i];
  48. }
  49. if(i!=p)
  50. {
  51. if(Min2>a[i])
  52. Min2=a[i];
  53. }
  54. }
  55. Min1=-Min1;
  56. Min2=-Min2;
  57. if(Max1==)
  58. aa[]=;
  59. if(!Max2)
  60. bb[]=;
  61. if(Min1==)
  62. aa1[]=;
  63. if(Min2==)
  64. bb1[]=;
  65. while(Max1)
  66. {
  67. aa[l1++]=Max1%;
  68. Max1/=;
  69. }
  70. while(Max2)
  71. {
  72. bb[l2++]=Max2%;
  73. Max2/=;
  74. }
  75. for(i=;i<l1;i++)
  76. for(j=;j<l2;j++){
  77. sum[i+j]+=aa[i]*bb[j];
  78. l=i+j;
  79. }
  80. for(i=;i<l;i++)
  81. {
  82. ll w=sum[i];
  83. sum[i]=w%;
  84. sum[i+]+=w/;
  85. }
  86. while(Min1)
  87. {
  88. aa1[l3++]=Min1%;
  89. Min1/=;
  90. }
  91. while(Min2)
  92. {
  93. bb1[l4++]=Min2%;
  94. Min2/=;
  95. }
  96. for(i=;i<l3;i++)
  97. for(j=;j<l4;j++){
  98. sum1[i+j]+=aa1[i]*bb1[j];
  99. lp=i+j;
  100. }
  101. for(i=;i<lp;i++)
  102. {
  103. ll w=sum1[i];
  104. sum1[i]=w%;
  105. sum1[i+]+=w/;
  106. }
  107. int flag=;
  108. if(lp>l) flag=;
  109. else
  110. {
  111. for(i=;i<;i++)
  112. {
  113. if(sum[i]<sum1[i])
  114. {
  115. flag=;
  116. break;
  117. }
  118. }
  119. }
  120. if(flag)
  121. {
  122. for(;lp>=;lp--) printf("%lld",sum1[lp]);
  123. printf("\n");
  124. }
  125. else
  126. {
  127. for(;l>=;l--) printf("%lld",sum[l]);
  128. printf("\n");
  129. }
  130.  
  131. }
  132. return ;
  133. }

问题 H: 抽奖活动(大数)的更多相关文章

  1. ASC(22)H(大数+推公式)

    High Speed Trains Time Limit: 4000/2000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others) Su ...

  2. 20160219.CCPP体系详解(0029天)

    程序片段(01):ReplaceAll.c 内容概要:ReplaceAll #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #incl ...

  3. poj 1945 Power Hungry Cows A*

    Description:     就是给你一个数,你可以把它自乘,也可以把他乘或除以任意一个造出过的数,问你最多经过多少次操作能变换成目标数 思路:这题真的不怎么会啊.n = 20000,每一层都有很 ...

  4. Intel® QAT加速卡之加密、哈希操作流程和示例

    Intel QAT 加密API介绍 文章主要讲述了Intel QAT 加密API接口的说明,以及多种应用场景下的使用方法. 文章目录 Intel QAT 加密API介绍 1. 概述 1.1 会话(se ...

  5. 江西财经大学第一届程序设计竞赛 H题 求大数的阶乘

    链接:https://www.nowcoder.com/acm/contest/115/H 来源:牛客网 晚上,小P喜欢在寝室里一个个静静的学习或者思考,享受自由自在的单身生活. 他总是能从所学的知识 ...

  6. HDU - 6433: H. Pow (简答题,输出大数)

    There are n numbers 3^0, 3^1, . . . , 3^n-1. Each time you can choose a subset of them (may be empty ...

  7. c语言经典算法——查找一个整数数组中第二大数

    题目: 实现一个函数,查找一个整数数组中第二大数. 算法思想: 设置两个变量max1和max2,用来保存最大数和第二大数,然后将数组剩余的数依次与这两个数比较,如果这个数a比max1大,则先将max1 ...

  8. 杨氏矩阵:查找x是否在矩阵中,第K大数

    参考:http://xudacheng06.blog.163.com/blog/static/4894143320127891610158/ 杨氏矩阵(Young Tableau)是一个很奇妙的数据结 ...

  9. 蓝桥杯算法提高 P1001(大数乘法)

      算法提高 P1001   时间限制:1.0s   内存限制:256.0MB   当两个比较大的整数相乘时,可能会出现数据溢出的情形.为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法. 具体 ...

随机推荐

  1. UV-Sprite动画

    [UV-Sprite动画] 下文以单行Sprite纹理作为动画贴图.首先需要输入纹理宽度.Sprint数量.速度: 计算每个Sprite的像素宽与UV宽: 根据_Time,计算当前显示第几个Sprit ...

  2. Excel VBA入门(一)数据类型

    与其它的编程语言一样,VBA也有它自己的数据类型.讲到数据类型,就离不开"变量"与"常量"这两个概念,变量与常量,都是用于保存数据的.顾名思义,"变量 ...

  3. 【ZOJ 3228】Searching the String 【AC自动机】

    题意 给出n个模式串和一个文本串,输出各个模式串在文本串中出现的次数.模式串有两种类型,0类型代表可以有重叠,1类型代表不能有重叠.模式串可能出现重复. 分析 算是AC自动机的模板题? 因为模式串可以 ...

  4. Spring中Aspect的切入点的表达式定义细节

    用过很多次切面aspect了,对于表达式总是记得很模糊,今天总结一下. 1.切面做如下设置则只会拦截返回值为String类型的方法 @Aspect public class MyInterceptor ...

  5. 为什么要用Android Studio?

    为什么要用Android Studio 本书节选自<Android Studio实用指南> 作者: 毕小朋 目前本书已上传到百度阅读,在百度中搜索[Anroid Studio实用指南]便可 ...

  6. 字符串查找 · Implement strStr()

    [抄题]: 对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始).如果不存在,则返回 -1. 如果 ...

  7. TTF字体基本知识及其在QT中的应用

    字体类型 以Windows为例,有4种字体技术: Raster:光栅型,就是用位图来绘制字形(glyph),每个字都以位图形式保存 Vector:矢量型,就是用一系列直线的结束点来表示字形 TrueT ...

  8. Linux ssldump命令

    一.简介 tcpdump是一款很强大.很有用的网络侦听软件,但是对于ssl加密的数据包就无能为力了:ssldump则是一款可以侦听ssl加密的数据包的软件.   二.安装 1)通过yum安装 yum ...

  9. [C++] Const Summary (mind map)

    Const Summary

  10. [SoapUI] DataSource, DataSourceLoop, DataSink

    Script assertion in login: