问题 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 当两个比较大的整数相乘时,可能会出现数据溢出的情形.为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法. 具体 ...
随机推荐
- 大神的---解决tomcat内存溢出问题----tomcat报错:This is very likely to create a memory leak问题解决
tomcat memory leak解决方案 这种问题在开发中经常会碰到的,看看前辈的总结经验 Tomcat内存溢出的原因 在生产环境中tomcat内存设置不好很容易出现内存溢出.造成内存溢出是不一 ...
- MySQL篇之Navicat可视化工具
主要内容: Navicat工具的介绍和使用 1.介绍和下载安装 <1>介绍 Navicat是一款针对MySQL数据库开发的可视化管理工具,以图形界面的形式操作MySQL数据库. 但在生产环 ...
- SpringBoot集成freemarker和thymeleaf模板
1.在MAVEN工程POM.XML中引入依赖架包 <!-- 引入 freemarker 模板依赖 --> <dependency> <groupId>org.spr ...
- HDFS Hbase
Hbase:Hbase是Hadoop的数据库,是bigtable的实现,基于HDFSHDFS:文件系统,是gfs的实现 Hive,Hbase,HDFS等之间的关系Hive:Hive不支持更改数据的操作 ...
- 三个参数,对mysql存储限制的影响
1.max_allowed_packet 这个参数会影响单此插入或读取的包的大小,一般和blob字段共用,但要注意一点是这个参数好像是分服务端与客户端的,如果想输出大字段的内容,则在用客户端链接服务 ...
- 案例研究:手机APP的UI设计流程
以下内容由Mockplus(http://www.mockplus.cn)团队翻译整理,仅供学习交流. UI设计——不仅仅是创造漂亮的图像. 面临的挑战 我为自己提供了一个绝佳的机会来训练我的视觉设计 ...
- 设计模式(java)--简单工厂模式之女娲造人.水果农场
女娲抟土造人 话说:“天地开辟,未有人民,女娲抟土为人.”女娲需要用土造出一个个的人,但在女娲造出人之前,人的概念只存在于女娲的思想里面. 女娲造人,这就是简单工厂模式的应用. 首先,在这个造人的思 ...
- command >/dev/null 2>&1 解说
0:表示键盘输入(stdin)1:表示标准输出(stdout),系统默认是1 2:表示错误输出(stderr) command >/dev/null 2>&1 & == ...
- HDU 6194 string string string (后缀数组)
题意:给定一个字符串,问你它有多少个子串恰好出现 k 次. 析:后缀数组,先把height 数组处理出来,然后每次取 k 个进行分析,假设取的是 i ~ i+k-1,那么就有重复的,一个是 i-1 ~ ...
- Hadoop中的控制脚本
1.提出问题 在上篇博文中,提到了为什么要配置ssh免密码登录,说是Hadoop控制脚本依赖SSH来执行针对整个集群的操作,那么Hadoop中控制脚本都是什么东西呢?具体是如何通过SSH来针对整个集群 ...