__int128使用】的更多相关文章

定义 __int128 n,r,g,b,T; __int128 ans; __int128 f[][]; 取最大值函数 __int128 getmax(__int128 a,__int128 b){ if (a>b) return(a);else return(b); } 输出 void print(__int128 x){ ) return; ); putchar(x%+'); } 其余与整形类似,对于略大于LL范围值计算方便…
__int128 __uint128 __int128_t __uint128_t 大小:16字节 2^128(sizeof()) 2^128 39位 340282366920938463463374607431768211456 Codeblocks 无法使用,Dev C++ 可以使用,有时候比赛能用 Problem:A+B http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1 #include <cstdio> #incl…
__int128 是 GCC 提供的扩展(extension),可以当作 128 位整数使用. 关于 __int128 和 __int128_t Normally, _t suffix means a typedef, __ prefix means reserved for compiler and _ prefix means reserved for standard library; I would guess that __int128 is the final native type…
题意 给定一个整数 $N$($1 \leq N \leq 10^{30}$),求最小的整数 $t$,要求 $t \geq N$,使得边长为 $t-1, t, t+1$ 的三角形面积为整数. 分析 根据海伦公式:$S = \sqrt{p(p-a)(p-b)(p-c)}$,$p = \frac{a+b+c}{2}$. 代入,令 $\frac{t}{2}=x$,化简得 $S^2 = 3x^2(x^2-1)$. 题目要求 $S$ 为整数,则 $(x^2-1)$ 一定是3乘以一个平方数, 即 $x^2-1…
#include <bits/stdc++.h> using namespace std; void scan(__int128 &x)//输入 { x = ; ; char ch; if((ch = getchar()) == '-') f = -f; + ch-'; ') x = x* + ch-'; x *= f; } void print(__int128 x)//输出 { ) { x = -x; putchar('-'); } ) print(x/); putchar(x%…
Normal (Naive)写法,用 string(char* ) std::ostream& operator <<(std::ostream&out,const __int128 b) { std::string s; __int128 t = b;int sig = 1; if(t < 0) sig = -1,t = -t; for(;t;t/=10) s += '0' + t % 10; if(sig == -1) s += '-'; reverse(s.begi…
HDU6719 Strassen 直接照题目模拟,数据范围最大不会超过__int128. 时间复杂度为 \(O(\log n)\) . #include<bits/stdc++.h> using namespace std; const int mod = 1e9 + 7; __int128 ans; int t, a, b; long long n; __int128 solve(__int128 n) { __int128 ans = n*n*n*b+(n-1)*n*n*a; if(n%2…
输入输出模板: __int128无法使用cin和cout进行输入输出,所以只能自己写一个输入输出的模板: #include <bits/stdc++.h> using namespace std; void scan(__int128 &x)//输入 { x = ; ; char ch; if((ch = getchar()) == '-') f = -f; + ch-'; ') x = x* + ch-'; x *= f; } void _print(__int128 x) { )…
前言 如果遇到 long long 开不下的情况,可以使用 __int128 来博一把! note :__int128 仅 \(64\) 位 \(GCC G++\) 支持,不在 \(C++\) 标准中!不在 namespace std 中! \(64\) 位 \(GCC\) 可直接使用. 存储范围 顾名思义, __int128 就是占用128字节的整数存储类型.由于是二进制,范围就是 \(-2^{127}\) ~ \(2^{127}-1\),如果使用了 unsigned __int128,则范围…
#include<bitset> #include<algorithm> #include<iostream> #include<string> #include<deque> #include<cstdio> using namespace std; class int128; void shift(int128 & in,deque<bool> & de); template<size_t N&g…
A. Associated Vertices 首先求出SCC然后缩点,第一次求出每个点能到的点集,第二次收集这些点集即可,用bitset加速,时间复杂度$O(\frac{nm}{64})$. #include<cstdio> #include<bitset> using namespace std; const int N=10010; int n,m,x,y,i,j,g[N],G[N],v[N*3],V[N*3],nxt[N*3],NXT[N*3],ed; int vis[N],…
我曾经在知乎的一个答案里谈及到 V8 引擎里实现了 Grisu 算法,我先引用该文的内容简单介绍 Grisu.然后,再谈及 RapidJSON 对它做了的几个底层优化. (配图中的<Grisù>是一套1970年代的意大利卡通短片,主角 Grisù 是一只想成为消防员的小龙.估计 Grisu 算法以龙命名,是与上一代的 Dragon4 算法相关.) Grisu是什么 Grisu 是把浮点数转换为字符串的算法.在 Chrome 里执行这段 JavaScript 实际上就调用了 Grisu: doc…
A. Bracket Expression 直接按题意模拟即可. 时间复杂度$O(n)$. #include<stdio.h> #include<algorithm> #include<math.h> #include<string.h> #include<string> #include<vector> #include<set> #include<map> #include<queue> #in…
题目描述 给出\(n\),求\(x^2+y^2=n^2,x,y,z\in \mathbb{Z}\)的解数. 复杂度 \(O\left(T_{\mathtt{factorization}}(n)\right)\).在解答中使用Pollard \(\rho\)算法,复杂度\(O\left( n^{1/4}\right)\). 题解 见 潘承洞.潘承彪 <初等数论>第三版 第287页的结论,可简单推出 对于\(n\)的一个形如\(4n+1\)的素因子\(p\),对答案的贡献是\(2c+1\),其中\…
/****************************************************************************************** Copyright 2013 Andrea Ragusa Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the Lice…
题意:n个数 m个询问 每个询问[l, r]的和, 再把[l, r]之间所有的数变为平方(模为9223372034707292160LL) 很明显的线段树 看到这个模(LLONG_MAX为9223372036854775807) 很明显平方时会爆LL 很容易发现所有数平方模了几次之后值就不再改变了 而且这个“几次”相当小 因此直接暴力搞就好了 public static void main(String[] args) { Scanner in = new Scanner(System.in);…
作者:史宁宁(snsn1984) 首先我们确定下Clang编译器的详细内容和涵盖范围.之前在<LLVM每日谈之二十 Everything && Clang driver>中以前提到过.Clang driver(命令行表示是clang)和Clang前端(依照详细实现来说就是Clang的那些库所实现的前端)是不同的.同一时候还存在一个Clang编译器(命令行表示是clang -cc1).Clang编译器不只包括了Clang前端,还包括使用LLVM的哭实现的编译器的中间阶段以及后端,…
from apple In general, iOS adheres to the generic ABI specified by ARM for the ARM64 architecture. However there are some choices to be made within that framework, and some divergences from it. This document describes these issues. Choices Made Withi…
input T           <=10 n k            n<=1000         k<=10^18 a1,a2,...an                |ai|<=10^18 output (a1^k+a2^k+...+an^k)%10^10+7 Sample Input 2 3 1 1 2 3 3 10 1 2 3 Sample Output 6 60074 做法:快速幂+__int128,需注意ai可能是负数,模的是10^10+9,超int了 模乘法…
语法分析器的任务是确定某个单词流是否能够与源语言的语法适配,即设定一个称之为上下文无关语言(context-free language)的语言集合,语法分析器建立一颗与(词法分析出的)输入单词流对应的正确语法树.语法分析树的建立过程主要有两种方法:自顶向下语法分析法和自底向上分析法.AST作为语法分析树(parse tree)的一种简写方式,它独立于具体编程语言(C++.Java.C等),而且与语法分析树的建立过程无关(自顶向下和自底向上逻辑等价),是联系编译器前端.后端的重要接口.Clang的…
题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2.每次取走的各个元素只能是该元素所在行的行首或行尾: 3.每次取数都有一个得分值,为每行取数的得分之和,每行取数的得分 = 被取走的元素值*2^i,其中i表示第i次取数(从1开始编号): 4.游戏结束总得分为m次取数得分之和. 帅帅想请你帮忙写一个程序,对于任意矩阵,可以求出取数后的最大得分. 输入输…
/* This file contains definitions used by the Hex-Rays decompiler output. It has type definitions and convenience macros to make the output more readable. Copyright (c) 2007-2011 Hex-Rays */ #if defined(__GNUC__) typedef long long ll; typedef unsigne…
Description 有 n 棵树,初始时每棵树的高度为 H_i,第 i 棵树每月都会长高 A_i.现在有个木料长度总量为 S 的订单,客户要求每块木料的长度不能小于 L,而且木料必须是整棵树(即不能为树的一部分).现在问你最少需要等多少个月才能满足订单. Input 第一行 3 个用空格隔开的非负整数 n,S,L,表示树的数量.订单总量和单块木料长度限制.第二行 n 个用空格隔开的非负整数,依次为 H1,H2,…,Hn.第三行 n 个用空格隔开的非负整数,依次为 A1,A2,…,An. Ou…
一.多线程下共享变量的问题 在多线程编程中经常需要在不同线程之间共享一些变量,然而对于共享变量操作却经常造成一些莫名奇妙的错误,除非老老实实加锁对访问保护,否则经常出现一些(看起来)匪夷所思的情况.比如下面便是两种比较"喜闻乐见"的情况. (a) i++问题 在多线程编程中,最常拿来举例的问题便是著名的i++ 问题,即:多个线程对同一个共享变量i执行i++ 操作.这样做之所以会出现问题的原因在于i++这个操作可以分为三个步骤: |step|operation| |---|---| |1…
题目大意 有一个数轴.yww 最开始在位置 \(0\).yww 总共要跳跃很多次.每次 yww 可以往右跳 \(1\) 单位长度,或者跳到位置 \(1\). 定义位置序列为 yww 在每次跳跃之后所在的位置组成的序列(显然不包括 \(0\)). 有 \(k\) 个数是好的,分别为 \(a_1,a_2,\ldots,a_k\). 定义一个位置序列是好的当且仅当: 所有好的数的出现次数之和为 \(n\) . 序列中最后一个数是好的. 对于每一个长度为 \(m\) 的子区间,区间内至少有一个好的数.…
题目大意 有 \(n\) 堆石子,初始时第 \(i\) 堆石子有 \(a_i\) 个. 你每次取石子会取 \(k\) 个.在你取完一堆石子之后才能在下一堆中取石子. 游戏会进行 \(t\) 轮,每轮会发生以下事件: 你可以进行任意次取石子操作. 每堆的石子个数会增加,具体的,第 \(i\) 堆的式子个数会增加 \(b_i\) 个. 每一堆式子有个上限 \(c_i\),如果在某个时刻,某堆石子的数量超过上限,就就输了. 求在不会输掉游戏的前提下,你最少进行几次取石子操作. \(n,t\leq 20…
原文链接www.cnblogs.com/zhouzhendong/p/LOJ3048.html 题解 $O(n\log^2 {a_i})$ 的做法比较简单: 1. 求出第 k 大的是什么: 二分答案,在Trie树上统计一下答案. 2. 求出前 k 大的和:已经知道了第 k 大的数值,那么,只要再在 Trie 树上走一趟就好了. 这两部分直接暴力都是 $O(n\log^2 a_i)$ 的. 那么我们来稍微优化一下: 对于 1. ,我们改成 Trie 树上二分,变成了 $O(n\log a_i)$…
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ7.html 题解 这题是Unknown的弱化版. 如果这个问题出在序列上,那么显然可以CDQ分治 + 斜率优化 + 凸包上二分来做. 那么它出在树上? 点分治. 写挂了好多地方调了好久,自闭了. 代码 #pragma GCC optimize("Ofast","inline") #include <bits/stdc++.h> #define clr(x) me…
A. Drone With a Camera 三分套三分. #include<cstdio> #include<cmath> #include<algorithm> using namespace std; typedef long double ld; const ld K=1e9,inf=1e100,eps=1e-9; const int T=200; struct P{ ld x,y; P(){} P(ld _x,ld _y){x=_x,y=_y;} }O; st…
题意 题目链接 Sol 设\(f[i][j]\)表示前\(i\)个位置中,以\(j\)为结尾的方案数. 转移的时候判断一下\(j\)是否和当前位置相同 然后发现可以用矩阵优化,可以分别求出前缀积和逆矩阵的前缀积(这题的逆矩阵炒鸡好求) 这样就可以\(n*10^3\) 发现相邻两个矩阵只有一行不同,那么其他的可以直接copy. 就可以做到\(n*10^2\)了. #include<bits/stdc++.h> #define Pair pair<int, int> #define M…