- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在解决一些学校奥林匹克竞赛的任务,但我被一个问题困住了。我找到了该任务的解决方案,但我的解决方案需要平方根。我的代码对于前 12 个输入工作正常,但随后给出了错误的答案。我猜想这是由于输入量非常大,可能大到 10^400000。所以我想知道是否有办法计算C中这些极大输入的平方根的整数部分。代码如下:
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main(){
long long n;
scanf("%lld", &n);
long long ans;
ans = sqrtl(n-1);
long long result;
result = ans+1-llabs(n-ans*ans-(ans+1));
printf("%lld\n", result);
return 0;
}
最佳答案
简而言之,您可以通过二分法滚动长平方根算法,如下所示:
选择长数字表示(无符号整数数组);
实现长加法和减法(非常简单,除了进位);
实现减半(也需要注意进位);
实现长比较(类似于减法)。
[请注意,加法允许您实现加倍和四倍,减半也会产生除以四的结果。]
然后设置d= 1
并重复将d
加倍,直到d² > N
。 (每次将 d
加倍,d²
就会增加四倍。)
接下来,设置a= 0
以使不变式
a² ≤ N < (a + d)²
成立,并在保持不变的情况下重复将d
减半。这是通过以下方式实现的:
d= d/2;
如果N ≥ (a + d)²
,则设置a= a + d
;否则保持 a
不变。
最后,您将缩小范围
a² ≤ N < (a + 1)²
这样a
就是整数平方根。
评估条件
N < (a + d)² = a² + 2ad + d²,
或
N - a² < 2ad + d²,
只需跟踪术语 N - a²
、2ad
和 d²
并在修改 d 时更新它们就足够了
或 a
。这只需要前面提到的原始操作。
关于在 C 中计算极大数的平方根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48176305/
出于某种原因,我的平方根程序得到的答案与大多数输入应得到的答案略有不同。我不确定这是为什么。只有某些输入是错误的。在给出答案后的最后我也遇到了段错误,我不确定为什么会这样。 #include #inc
我目前正在实现一个可以处理与物理单位相关的数字数据的类。 我想实现一种计算实例平方根的方法。假设您有一个具有属性值和名称的类的实例: from math import sqrt class Foo:
我正在使用 HTML + CSS + AngularJS 制作一个简单的计算器。一切正常,但我想添加一个 SquareRoot 函数。这是一些代码: function _solve(){ switc
问题是关于在通用数值接口(interface)中定义平方根算法的问题的策略方法。我知道存在解决不同条件下问题的算法。我对以下算法感兴趣: 仅使用选定的函数解决问题; 不关心操作的对象是整数、 floa
好吧,我已经研究了一段时间了,我知道我的逻辑是正确的,但是,我似乎无法生成正数的正确底平方根。 public int mySqrt(int x) { if(x 0) uppe
我找不到让这个函数 Math.sqrt(value) 工作的方法。 (╯°□°)╯︵┻━┻我不确定,但问题似乎出在运营商。我还尝试在 const calculation 中添加该函数,但它也不起作用。
我发现了这段获得平方根的代码,令我惊讶的是它的工作方式,使用 union 和位移这是代码: float sqrt3(const float x) { union { int i;
在 python 中使用 sqrt 函数时,我遇到了“distance ValueError: math domain error”问题。 这是我的代码: from math import sqrt
我一直在做一些研究,寻找一种对大整数进行运算的相对快速的平方根算法。我在这里找到了几个例程。第一个(下面)是用 C 语言编写的... int isqrt(int n) { int b = 0;
好吧,我想知道 math.h 平方根与其中包含神奇数字的那个(因 Quake 而出名,但由 SGI 制作)相比有多快。 但这对我来说是一个受伤的世界。 我首先在 Mac 上尝试了此操作,其中 math
有谁知道如何解决这个复发? 大定理在这里不起作用。 最佳答案 这在 O(1) 中似乎很明显,因为 T(n) = T(n - sqrt(n)) = T(m) with 0 < m < n 通过归纳,你得
我是一名优秀的程序员,十分优秀!