问题 H: 抽奖活动(大数)
题目描述
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代码
- #include<cstdio>
- #include<algorithm>
- #include<iostream>
- #include<cstring>
- using namespace std;
- typedef long long ll;
- const int M=;
- ll aa[],bb[],sum[];
- ll aa1[],bb1[],sum1[];
- ll a[M];
- int main()
- {
- ll n,T;
- cin>>T;
- while(T--)
- {
- cin>>n;
- ll i,j=,k=,p=,l=,l1=,l2=,l3=,l4=,lp=;
- memset(a,,sizeof(a));
- memset(aa,,sizeof(aa));
- memset(bb,,sizeof(bb));
- memset(sum,,sizeof(sum));
- memset(aa1,,sizeof(aa1));
- memset(bb1,,sizeof(bb1));
- memset(sum1,,sizeof(sum1));
- for(i=;i<n;i++)
- scanf("%lld",&a[i]);
- ll Max1=-,Max2=-,Min1=,Min2=;
- for(i=;i<n;i++)
- {
- if(Max1<a[i])
- {
- k=i;
- Max1=a[i];
- }
- if(Min1>a[i])
- {
- p=i;
- Min1=a[i];
- }
- }
- for(i=;i<n;i++)
- {
- if(i!=k)
- {
- if(Max2<a[i])
- Max2=a[i];
- }
- if(i!=p)
- {
- if(Min2>a[i])
- Min2=a[i];
- }
- }
- Min1=-Min1;
- Min2=-Min2;
- if(Max1==)
- aa[]=;
- if(!Max2)
- bb[]=;
- if(Min1==)
- aa1[]=;
- if(Min2==)
- bb1[]=;
- while(Max1)
- {
- aa[l1++]=Max1%;
- Max1/=;
- }
- while(Max2)
- {
- bb[l2++]=Max2%;
- Max2/=;
- }
- for(i=;i<l1;i++)
- for(j=;j<l2;j++){
- sum[i+j]+=aa[i]*bb[j];
- l=i+j;
- }
- for(i=;i<l;i++)
- {
- ll w=sum[i];
- sum[i]=w%;
- sum[i+]+=w/;
- }
- while(Min1)
- {
- aa1[l3++]=Min1%;
- Min1/=;
- }
- while(Min2)
- {
- bb1[l4++]=Min2%;
- Min2/=;
- }
- for(i=;i<l3;i++)
- for(j=;j<l4;j++){
- sum1[i+j]+=aa1[i]*bb1[j];
- lp=i+j;
- }
- for(i=;i<lp;i++)
- {
- ll w=sum1[i];
- sum1[i]=w%;
- sum1[i+]+=w/;
- }
- int flag=;
- if(lp>l) flag=;
- else
- {
- for(i=;i<;i++)
- {
- if(sum[i]<sum1[i])
- {
- flag=;
- break;
- }
- }
- }
- if(flag)
- {
- for(;lp>=;lp--) printf("%lld",sum1[lp]);
- printf("\n");
- }
- else
- {
- for(;l>=;l--) printf("%lld",sum[l]);
- printf("\n");
- }
- }
- return ;
- }
问题 H: 抽奖活动(大数)的更多相关文章
- ASC(22)H(大数+推公式)
High Speed Trains Time Limit: 4000/2000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others) Su ...
- 20160219.CCPP体系详解(0029天)
程序片段(01):ReplaceAll.c 内容概要:ReplaceAll #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #incl ...
- poj 1945 Power Hungry Cows A*
Description: 就是给你一个数,你可以把它自乘,也可以把他乘或除以任意一个造出过的数,问你最多经过多少次操作能变换成目标数 思路:这题真的不怎么会啊.n = 20000,每一层都有很 ...
- Intel® QAT加速卡之加密、哈希操作流程和示例
Intel QAT 加密API介绍 文章主要讲述了Intel QAT 加密API接口的说明,以及多种应用场景下的使用方法. 文章目录 Intel QAT 加密API介绍 1. 概述 1.1 会话(se ...
- 江西财经大学第一届程序设计竞赛 H题 求大数的阶乘
链接:https://www.nowcoder.com/acm/contest/115/H 来源:牛客网 晚上,小P喜欢在寝室里一个个静静的学习或者思考,享受自由自在的单身生活. 他总是能从所学的知识 ...
- 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 ...
- c语言经典算法——查找一个整数数组中第二大数
题目: 实现一个函数,查找一个整数数组中第二大数. 算法思想: 设置两个变量max1和max2,用来保存最大数和第二大数,然后将数组剩余的数依次与这两个数比较,如果这个数a比max1大,则先将max1 ...
- 杨氏矩阵:查找x是否在矩阵中,第K大数
参考:http://xudacheng06.blog.163.com/blog/static/4894143320127891610158/ 杨氏矩阵(Young Tableau)是一个很奇妙的数据结 ...
- 蓝桥杯算法提高 P1001(大数乘法)
算法提高 P1001 时间限制:1.0s 内存限制:256.0MB 当两个比较大的整数相乘时,可能会出现数据溢出的情形.为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法. 具体 ...
随机推荐
- UV-Sprite动画
[UV-Sprite动画] 下文以单行Sprite纹理作为动画贴图.首先需要输入纹理宽度.Sprint数量.速度: 计算每个Sprite的像素宽与UV宽: 根据_Time,计算当前显示第几个Sprit ...
- Excel VBA入门(一)数据类型
与其它的编程语言一样,VBA也有它自己的数据类型.讲到数据类型,就离不开"变量"与"常量"这两个概念,变量与常量,都是用于保存数据的.顾名思义,"变量 ...
- 【ZOJ 3228】Searching the String 【AC自动机】
题意 给出n个模式串和一个文本串,输出各个模式串在文本串中出现的次数.模式串有两种类型,0类型代表可以有重叠,1类型代表不能有重叠.模式串可能出现重复. 分析 算是AC自动机的模板题? 因为模式串可以 ...
- Spring中Aspect的切入点的表达式定义细节
用过很多次切面aspect了,对于表达式总是记得很模糊,今天总结一下. 1.切面做如下设置则只会拦截返回值为String类型的方法 @Aspect public class MyInterceptor ...
- 为什么要用Android Studio?
为什么要用Android Studio 本书节选自<Android Studio实用指南> 作者: 毕小朋 目前本书已上传到百度阅读,在百度中搜索[Anroid Studio实用指南]便可 ...
- 字符串查找 · Implement strStr()
[抄题]: 对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始).如果不存在,则返回 -1. 如果 ...
- TTF字体基本知识及其在QT中的应用
字体类型 以Windows为例,有4种字体技术: Raster:光栅型,就是用位图来绘制字形(glyph),每个字都以位图形式保存 Vector:矢量型,就是用一系列直线的结束点来表示字形 TrueT ...
- Linux ssldump命令
一.简介 tcpdump是一款很强大.很有用的网络侦听软件,但是对于ssl加密的数据包就无能为力了:ssldump则是一款可以侦听ssl加密的数据包的软件. 二.安装 1)通过yum安装 yum ...
- [C++] Const Summary (mind map)
Const Summary
- [SoapUI] DataSource, DataSourceLoop, DataSink
Script assertion in login: