草庐IT

个位数

全部标签

c++ - C++ 中 100 位数字的平方根

'unsignedlonglong'最多可以求解15位数字。有没有办法找到100位数字的平方根? 最佳答案 您还可以使用Boost.Multiprecision库。这个库为一些流行的多精度实现提供了包装器。#include#include#include#includeintmain(){std::strings(100,'0');s.at(0)='1';boost::multiprecision::mpfr_float_100f(std::move(s));boost::multiprecision::mpfr_float_100

c++ - 如何在 C++ 中自动添加和获取 128 位数字?

我使用Linuxx86_64和clang3.3。这在理论上有可能吗?std::atomic不起作用(对某些函数的undefinedreference)。__atomic_add_fetch也不起作用(“错误:还不能编译这个原子库调用”)。两者都是std::atomic和__atomic_add_fetch使用64位数字。 最佳答案 用一条指令不可能做到这一点,但你可以模拟它并且仍然是无锁的。除了最早的AMD64CPU,x64支持CMPXCHG16B指令。通过一些多精度数学,您可以很容易地做到这一点。恐怕我不知道GCC中CMPXCHG

c++ - 如何跟踪整数变化 vector 的中位数?

试图在http://www.hackerearth.com/problem/algorithm/sum-of-medians-1/解决问题并考虑使用多重集来解决它,因为它可能包含重复值。我尝试编写如下代码:#include#include#includeusingnamespacestd;intmain(){intn,k,med_sum=0,p;cin>>n;multisetm;multiset::iteratoritr;for(inti=0;i>k;m.insert(k);p=k;if(pSampleInput:n=51051215SampleOutput:27Explanation

c++ - 128 位数字的位移位运算

假设我有一个由4个32位整数组成的数组,我用它来存储128位数字如何对这个128位数字进行左右移位?谢谢! 最佳答案 使用uint128?如果可以,请使用专为此设计的x86SSE指令。(然后,当您对值进行位移后,就可以进行其他128位操作了……)SSE2移位平均需要4条指令,一个分支(一个case语句)。移动超过32位也没有问题。执行此操作的完整代码是使用gcc内在函数而不是原始汇编程序,位于sseutil.c(github:"UnusualusesofSSE2")中——它比粘贴在这里有意义的大一些。许多人在使用SSE2时遇到的障碍

c++ - 为什么 std::setprecision(6) 在固定宽度模式下流式传输超过六位数字?

以下代码的输出:#include#include#include#include#include#includeusingnamespacestd;inlinestringlexical_cast(constfloatarg){stringstreamss;ss::digits10)::digits10是:632.123455我期望并想要:632.1234因为据我所知,这就是float可以在我的系统上可靠地为我提供的范围。我怎样才能说服IOStreams按我的意愿行事? 最佳答案 在固定宽度模式中,“精度”设置用作小数位数,与科学模

c++ - 计算没有循环 C++ 的数字位数

我必须计算数字中的位数。我将数字除以10,直到得到0。每次迭代都会递增计数器。intnum;cin>>num;while(num>0){counter++;num=num/10;}挑战在于不使用任何循环或递归,只是一个if语句。这可能吗? 最佳答案 计数器=log(num)/log(10)在C++中:#include....counter=num==0?1:log10(std::abs(num))+1;你要的是日志功能cplusplus-log10cplusplus-std::abs 关

c++ - C/C++ 64位数组操作

我有一个效率关键型应用程序,我需要这样一个数组类型的数据结构A。它的键是0,1,2,...,它的值是uint64_tdistinct值。我需要两个常量操作:1.Giveni,returnA[i];2.Givenval,returnisuchthatA[i]==val我不喜欢使用哈希表。因为我试过GLibGHashTable,将6000万个值加载到哈希表中大约需要20分钟(如果我删除插入语句,只需要大约6秒)。时间不适合我的申请。或者也许有人推荐其他哈希表库?我尝试了uthash.c,它立即崩溃了。我也试过SDArray,但它似乎不是正确的。有人知道可以满足我要求的数据结构吗?或者任何有

c++ - 如何从数组中读取单个位?

假设我有一个动态分配的数组。int*array=newint[10]即10*4=40字节或10*32=320位。我想读取第30个字节或第242位的第2位。最简单的方法是什么?我知道我可以使用array[30]访问第30个字节,但访问单个位更加棘手。 最佳答案 boolbitset(voidconst*data,intbitindex){intbyte=bitindex/8;intbit=bitindex%8;unsignedcharconst*u=(unsignedcharconst*)data;return(u[byte]&(1

c++ - OCaml 中的快速位数组

另一个综合基准:SieveofEratosthenesC++#include#includevoidfind_primes(intn,std::vector&out){std::vectoris_prime(n+1,true);intlast=sqrt(n);for(inti=2;iOCaml(使用JaneStreet'sCore和Res库)openCore.StdmoduleBits=Res.BitsmoduleVect=Res.Arrayletfind_primesn=letis_prime=Bits.make(n+1)trueinletlast=floatn|!sqrt|!Flo

c++ - 存储为字符串的大量 100 位数字的除法

我有一个存储为字符串的100位数字。我想用一个小于10的整数除以这个数字。如何有效地将一个存储为字符串的大整数除以一个整数? 最佳答案 你可以查看bigintegerlibrary。您可以在C++程序中使用此库对大小仅受计算机内存限制的整数进行算术运算。该库提供分别表示非负整数和有符号整数的BigUnsigned和BigInteger类。大多数C++算术运算符都针对这些类进行了重载,因此大整数计算非常简单:#include"BigIntegerLibrary.hh"BigIntegera=65536;cout同时检查GMP