我正在使用Project Euler来提高我的C++编码技能,为下一学期我们将要进行的编程挑战做准备(因为他们不让我们使用Python,嘘!).
我在#16,我正试图找到一种方法来保持2°°的真正精确度
例如:
int main(){
double num = pow(2, 1000);
printf("%.0f", num):
return 0;
}
Run Code Online (Sandbox Code Playgroud)
版画
10715086071862673209484250490600018105614050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
缺少大部分数字(来自python):
>>> 2**1000
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376L
当然,我可以用Python 1衬里编写程序
sum(int(_) for _ in str(2**1000))
Run Code Online (Sandbox Code Playgroud)
这给了我立即的结果,但我正试图找到一种方法在C++中做到这一点.有什么指针吗?(哈哈...)
编辑:
标准库之外的东西对我来说毫无价值 - 在这些竞赛中只允许使用死树代码,而且我可能不会打印10,000行外部代码......
如何将BigDecimal对象转换为使用指数形式的String表示?类似的东西:3.134e67?我查看了API并找到了,toEngineeringString()但它没有给我我想要的东西.
由于舍入误差无法得到两个数字之间的比例:
Ratio=exp(x)/(exp(x)+exp(y))这样x=-1.11e4和y=-1.12e4.任何数学或计算技巧?
我有以下数据点想要曲线拟合:
import matplotlib.pyplot as plt
import numpy as np
from scipy.optimize import curve_fit
t = np.array([15474.6, 15475.6, 15476.6, 15477.6, 15478.6, 15479.6, 15480.6,
15481.6, 15482.6, 15483.6, 15484.6, 15485.6, 15486.6, 15487.6,
15488.6, 15489.6, 15490.6, 15491.6, 15492.6, 15493.6, 15494.6,
15495.6, 15496.6, 15497.6, 15498.6, 15499.6, 15500.6, 15501.6,
15502.6, 15503.6, 15504.6, 15505.6, 15506.6, 15507.6, 15508.6,
15509.6, 15510.6, 15511.6, 15512.6, 15513.6])
v = np.array([4.082, 4.133, 4.136, 4.138, 4.139, 4.14, 4.141, 4.142, 4.143,
4.144, 4.144, 4.145, 4.145, 4.147, 4.146, 4.147, 4.148, 4.148,
4.149, 4.149, 4.149, 4.15, 4.15, …Run Code Online (Sandbox Code Playgroud) 我有一些C代码将指数数字定义为常量.我如何用C#写这个?
double TOL = 1.E-8d;
double TOL2 = 1.E - 8;
Run Code Online (Sandbox Code Playgroud) 好吧所以我有这段代码:
blah = (26^0)*(1);
System.out.println(blah);
Run Code Online (Sandbox Code Playgroud)
哪个产生输出26,当它应该等于1.我做错了什么?我该怎么做才能解决这个问题?
我有非常大的值的对数,例如:
log_a = 1347
log_b = 1351
Run Code Online (Sandbox Code Playgroud)
我正在尝试解决这个问题:
exp(log_a) - (0.1 * exp(log_b))
Run Code Online (Sandbox Code Playgroud)
或者相当于此(相同的表达式只是以不同的形式):
exp( log_a ) - exp( log(0.1) + log_b )
Run Code Online (Sandbox Code Playgroud)
但是当然每当我尝试计算exp(log_a)或exp(log_b)值时,我都会得到Inf.我可以使用任何技巧来获得exp(log_a) - (0.1*exp(log_b))的真实结果,是以对数还是指数形式?
非常感谢你的帮助!
我是那种一卡与自动机和语法问题.我搜索了很多但没有成功.
它甚至有可能构建一个语法生成这种语言L?
L = { a(2i) | i >= 0}
谁能为我提供简单的解决方案?
grammar context-free-grammar automaton exponential context-free-language
我想用矩阵和向量计算指数.矩阵如下
ID var_0 var_01 var_02 var_03
1 1 2 3 4
2 5 6 7 8
3 9 10 11 12
...
Run Code Online (Sandbox Code Playgroud)
和向量是(0.1,0.2,0.3,0.4)
我想得到如下结果
ID var_0 var_01 var_02 var_03
1 1^0.1 2^0.2 3^0.3 4^0.4
2 5^0.1 6^0.2 7^0.3 8^0.4
3 9^0.1 10^0.2 11^0.3 12^0.4
...
Run Code Online (Sandbox Code Playgroud)
也就是说,我想为每个ID获取(ith var)^ ith矢量
我有一个双号:
element.MaxAllowableConcLimitPpm = 0.077724795640326971;
Run Code Online (Sandbox Code Playgroud)
我需要将其显示为
7.7725e-2
当我尝试使用它时:
element.MaxAllowableConcLimitPpm.ToString("e4", CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)
它返回
7.7725e-002
怎么说尾数应该有一个符号而不是3个?
格式如下:
.ToString("0.0000e0")
Run Code Online (Sandbox Code Playgroud)
回报
5.0000e2
代替
5.0000e + 2