首页 > 其他分享 >洛谷 P9009 [入门赛 #9] 牵连的世界 (Hard Version) 题解

洛谷 P9009 [入门赛 #9] 牵连的世界 (Hard Version) 题解

时间:2023-04-02 09:55:29浏览次数:34  
标签:__ le 洛谷 运算 int 题解 Hard taskid id

P9009[入门赛#9],真9。
这是一道 hack 题 ,即你需要自造符合题意的数据使题中所给程序无法 AC。

Task01

看数据范围知一切,显然有 \(-2\times 10^9 \le a_i \le 2\times 10^9\),因此 \(a_i\) 可能为负数。注意 C/C++ 中的取模 % (mod) 运算实质上是为取余运算 (rem)

对于整型数a,b来说,取模运算或者求余运算的方法都是:
1.求整数商:$ c = \dfrac{a}{b} $;
2.计算模或者余数: \(r = a - c\times b\).
求模运算和求余运算在第一步不同: 取余运算在取c的值时,向 0 方向舍入;而取模运算在计算c的值时,向负无穷方向舍入。

——摘自百度百科
因此,当 \(a_i\) 为负奇数时,a[i] % 2 的值为 -1,造成错误。所以只要搞一个 \(a_i\) 满足 \(a_i \le 0\) 即可。

Task02

我们发现,\(p\le 10^{12}\)。而 \(\log_{2}10^{12}\approx 39.86>2^{31}-1\),因此当 \(p>\sqrt{2^{31}-1}\) 且 \(p\) 为质数时,int 会爆。写个程序发现 999999999989 这个数满足条件。

Task03

众所周知,我们经常在二分是这样取 \(mid\):
int mid = l + (r - l) / 2
而不是这么写:
int mid = (l + r) / 2
这是因为有时 \(l+r\) 很大,会爆。显然,这题就有这种特性。于是,造俩最大的数据就行了。
2
2000000000 2000000000

写在最后

如果实在不会做 hack 题,怎么办?直接无脑输出极限数据,很大概率可以过。这里的极限指数据规模及数据大小都达到极限。

Python 解

def main():
    taskid = int(input())
    if taskid == 1:
    	print("1\n-1");
    elif taskid == 2:
    	print("999999999989")
    elif taskid == 3:
    	print("2\n2000000000 2000000000")
if __name__ == '__main__':
    main()

C/C++ 解

#include<stdio.h>

int main() {
	int id;
	scanf("%d", &id);
	if(id == 1) printf("1\n-1");
	else if(id == 2) printf("999999999989");
	else if(id == 3) printf("2\n2000000000 2000000000");
	return 0;
}

标签:__,le,洛谷,运算,int,题解,Hard,taskid,id
From: https://www.cnblogs.com/ZyIOLO/p/17279961.html

相关文章

  • 洛谷 P8762 [蓝桥杯 2021 国 ABC] 123 题解
    为什么可以使用前缀和,这里提供解释:初读题目,我们发现这个数列很迷惑,似乎不能使用数学方法来解。\[1,1,2,1,2,3,1,2,3,4,\cdots\]但是,我们可以想到数形结合的方式,我们将数列看作一个三角形,于是他变成了:\[1\]\[1,2\]\[1,2,3\]\[1,2,3,4\]\[\cdots\cdots\]于是本题变得好思......
  • 洛谷P1217 [USACO1.5]回文质数 Prime Palindromes
    #include<bits/stdc++.h>usingnamespacestd;inta,b;boolzs(intx){if(x%2>0){for(inti=3;i<x;i+=2)if(x%i==0)returnfalse;returntrue;}elsereturnfalse;}boolhws(intx......
  • SP181 SCUBADIV - Scuba diver 题解
    题目传送门题目大意潜水员有\(n\)个气缸,每个气缸能够提供容量为\(o_i\)的氧气和容量为\(d_i\)的氮气,每个气缸的重量为\(w_i\)。给出潜水员所需要的氧气量和氮气量,求所需气缸的总重的最低限度是多少。解题思路对于每个气缸,有两种不同的费用:氧气和氮气,需要满足这两个条......
  • 一篇关于异或操作的题解 (来源:杭电oj: find your present (2))
    害惭愧惭愧老长时间没写代码了——————————转回正题,对于杭电这个题先说我超时的错误想法—————————————————————————————————————————————————————————————— 一开始我的想法是开一个大小为100000......
  • [省选联考 2023]D1 题解
    D1T1P9166火车站观察题目,联系到以前做过的一些区间dp可以发现如果小A可以去到(这里是去到而不是最终停在)\(k\)地点,那么\(x\)到\(k\)之间的所有地点他都可以去到,因为火车是连续的,不能跳着走,要来到当前地点必须到过路途中的所有节点。这样子就好办了,分两次处理往左边和......
  • P6146 [USACO20FEB]Help Yourself G 题解
    题目链接先按左端点从小到大排序。设\(f(i)\)表示前\(i\)条线段的所有子集的复杂度之和。考虑从\(f(i-1)\)转移到\(f(i)\),即考虑新加进来第\(i\)条线段的过程。第\(i\)条线段加进来所新产生的贡献分两种:设除了第\(i\)条线段选中的线段集合为\(S\),则若\(S\)......
  • # P4391 [BOI2009]Radio Transmission 无线传输 题解
    [BOI2009]RadioTransmission无线传输题目描述给你一个字符串\(s_1\),它是由某个字符串\(s_2\)不断自我连接形成的(保证至少重复\(2\)次)。但是字符串\(s_2\)是不确定的,现在只想知道它的最短长度是多少。输入格式第一行一个整数\(L\),表示给出字符串的长度。第二行给出......
  • 笔记:洛谷 P3985 不开心的金明
    算法笔记:[背包问题]洛谷P3985不开心的金明题目详情原题链接:洛谷P3985不开心的金明不开心的金明Description  金明今天很不开心,家里购置的二手房就要领钥匙了,房里并没有一间他自己专用的很宽敞的房间。更让他不高兴的是,妈妈昨天对他说:“你需要购买哪些物品,怎么布置,你......
  • 4.1 模拟赛题解
    A一模一样讲过B先做一遍前缀和将区间和转成两数之差的形式。cdq分治,递归时排好序。按顺序枚举左端点,合法的右端点区间单调移动。CIDA*,容易发现每次翻转并不会打乱中间的铁盘,只会改变下边界的相邻关系。最终顺序相邻两个铁盘大小相差均为\(1\),所以估价函数设为已操作次数......
  • 使用 IntelliJ IDEA 构建 Spring Framework 5.3.21 源码问题解决
    源码版本1、下载地址:https://github.com/spring-projects/spring-framework/tags2、选择要构建的源码版本并下载,例如:5.3.21相关环境1、操作系统:Windows102、JDK版本:Jdk173、IDE工具:IntelliJIDEA2021.3.34、项目构建工具:Gradle7.3.3使用IntelliJIDEA构建Spring......