AtCoder Beginner Contest 169 B Multiplication 2 long long竟然不够用

2023-11-19

AtCoder Beginner Contest 169   比赛人数11374  比赛开始后15分钟看到A题,在比赛开始后第20分钟看到所有题

AtCoder Beginner Contest 169  B   Multiplication 2   long long竟然不够用

总目录详见https://blog.csdn.net/mrcrack/article/details/104454762

在线测评地址https://atcoder.jp/contests/abc169/tasks/abc169_b

long long竟然不够用,那么两种情况

1.读入数组中有数值为0的情况,那么直接输出0,可将数组元素自小到大排序,若a[1]==0,直接输出0.

2.计算过程中,long long确实不够用,如ans*a[i]>10^18怎么办?可以这样判定a[i]>10^18/ans

这样能保证a[i],10^18/ans都在long long范畴。

注意

#define num (LL)1000000000000000000

这个宏定义正确

#define num 1e18

这个宏定义错误,因1e18是浮点数,在整数计算中存在误差,无法AC.

AC代码如下

#include <cstdio>
#include <algorithm>
#define LL long long
#define num (LL)1000000000000000000
using namespace std;
LL a[100010];

int main(){
	int n,i;
	LL ans=1;
	scanf("%d",&n);
	for(i=1;i<=n;i++)scanf("%lld",&a[i]);
	sort(a+1,a+1+n);
	if(a[1]==0){printf("0\n");return 0;}
	for(i=1;i<=n;i++)
		if(a[i]>num/ans){printf("-1\n");return 0;}
		else ans*=a[i];
	printf("%lld\n",ans);
	return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AtCoder Beginner Contest 169 B Multiplication 2 long long竟然不够用 的相关文章

随机推荐

  • Qpython读取手机短信

    环境 手机RedMi Note 9 Pro 系统MIUI12 自带应用商店下载 QPython OP 在设置中要打开Qpython OP 的相关权限 否则会空指针 QPython OP 使用手册 读取短信代码如下 一个简单示例 from a
  • 几种Linux 查询外网出口IP的方法

    几种Linux 查询外网出口IP的方法 Curl 纯文本格式输出 curl icanhazip com curl ifconfig me curl curlmyip com curl ip appspot com curl ipinfo i
  • 【QrCode前端生成二维码】使用前端实现二维码

    遇到客户需求是扫码来替代人工输入一些数据 然后想着只从前端实现最好不过 然后就发现了qrCode这个js库 div div 可选参数来设置 var qrcode new QRCode test text http www qiuguodj
  • vue项目中批量删除如何实现的

    简单回答 与单个删除的接口为同一个 然后通过数组对象的id来删除
  • 光模块组装过程中常见问题分析及解决方法

    光模块组装过程中会出现一些问题 经常使用光模块的人可能会知道 下面就分享了组装光模块的问题及原因分析 并附有解决方案 大家参考下 希望对大家有帮助 在光模块组装过程中会出现一些问题 经常使用光模块的人可能会知道 组装光模块的问题 分析如下
  • 【嵌入式基础】串口中断通信VS串口DMA通信

    目录 目录 前言 一 串口通信 1 通信方式 2 通信速率 3 串口通信的三种工作方式 二 串口中断通信 1 串口中断特点 2 CubeMX配置初始化串口中断相关外设 3 串口中断程序分析 4 实验效果 三 串口DMA通信 1 关于DMA
  • 数字后端知识点扫盲——后端设计流程及使用工具

    1 DFT Design For Test 可测性设计 芯片每一步往往都自带测试电路 DFT的目的就是在设计的时候就考虑将来的测试 DFT的常见方法是 在设计中插入scan chain 将非扫描单元 如寄存器 变为扫描单元 DFT工具是sy
  • VS包含目录、库目录、附加依赖项、环境变量详解

    首先 提出一个问题 我们编译一个程序 都需要哪些文件 1 头文件 2 静态库lib 3 动态库dll 针对这三个文件 我们便可以设置工程的相关属性 1 头文件 我们要用到一个头文件 需要知道这个头文件的名字 然后用 include将它包含进
  • Java高级-包装类、BigDecimal和BigInteger

    基本数据类型和包装类 基本数据类型和包装类如下所示 基本类型 包装类 int java lang Integer 父类为java lang Number long java lang Long 父类为java lang Number dou
  • Maven中:可以被子模块继承的元素

    即使是长期从事 Maven 工作的开发人员也不能完全掌握聚合 多模块 和 Parent 继承的关系 在使用多模块时 子模块总要指定聚合的 pom 为
  • Linux中如何修改文件或目录的权限?

    在Linux系统中 文件权限是非常重要的一个概念 它能够决定谁可以访问文件 以及可以执行哪些操作 正确地设置文件权限可以确保系统的安全性和稳定性 那么如何设置文件权限呢 以下是详细的内容 在 Linux 系统中 可以使用 chmod 命令来
  • unity中的一些快捷键(齐)

    重命名的快捷键是F2 ALT 鼠标左键点击Hierarchy对象可以展开和收起对象的所有子物体 SHIFT 空格 可以对当前窗口进行放大缩小
  • 部署docker

    1 移除之前安装过的Docker sudo yum y remove docker docker client docker client latest docker common docker latest docker latest l
  • maven怎么引入jdom_如何在Maven项目中引入自己的jar包

    1 一般情况下jar包都可以使用pom xml来配置管理 但也有一些时候 我们项目中使用了一个内部jar文件 但是这个文件我们又没有开放到maven库中 我们会将文件放到我们项目中 以下以java工程为例随便放了个地方 2 jar包的引入和
  • RK3308 Ubuntu16.04移植

    一 概述 本章将介绍Ubuntu在RK平台上的移植以及AP配网 常用的fs为buildroot编译出来的linux文件系统 而本次则是ubuntu文件系统 系统启动后需要手动对WIFI驱动进行加载并配网 二 配置Kernel 为了支持ubu
  • python requests 爬虫--爬取HTML源码不显示正文已解决

    爬虫第一步 获取整个网页的HTML信息 源代码如下 coding UTF 8 import requests if name main target https www biqukan com 1 1094 5403177 html req
  • Wireshark过滤规则及使用方法

    前言 我看到的这篇文章是转载的 但我也不知道他是从哪转载的 o 转自 Wireshark 基本语法 基本使用方法 及包过滤规则 1 过滤IP 如来源IP或者目标IP等于某个IP 例子 ip src eq 192 168 1 107 or i
  • Java基础:常用类Compare

    Compare类 Comparable接口 自然排序 1 像String 包装类等实现了Comparable接口 重写了compareTo 方法 2 String 包装类重写了compareTo 方法后 进行了从小到大的排列 Test pu
  • Linux内核内存管理算法Buddy和Slab

    文章目录 Buddy分配器 CMA Slab分配器 总结 Buddy分配器 假设这是一段连续的页框 阴影部分表示已经被使用的页框 现在需要申请一个连续的5个页框 这个时候 在这段内存上不能找到连续的5个空闲的页框 就会去另一段内存上去寻找5
  • AtCoder Beginner Contest 169 B Multiplication 2 long long竟然不够用

    AtCoder Beginner Contest 169 比赛人数11374 比赛开始后15分钟看到A题 在比赛开始后第20分钟看到所有题 AtCoder Beginner Contest 169 B Multiplication 2 lo