gpt4 book ai didi

c++ - 输入巨大的二进制数C++

转载 作者:行者123 更新时间:2023-12-03 07:00:27 27 4
gpt4 key购买 nike

因此,我正在研究一个竞争性编程问题,在该问题中,您需要将两个数字分别乘以2和3,然后对它们进行一些运算。我的代码正确实现,但是不适用于大输入。例如,当我尝试输入10010111011100101101100011011(第二个基数)和211010102022001220(三个基数)时。这是因为我将它们输入为正整数,然后将其转换为实际的基数10值。
这是我的转换函数(仅适用于基数2和3)

int conv(int base, ll n){
int result = 0;
if(base == 2){
int a = 0;
while(n > 0){
if(n % 2 == 1){
result += pow(2, a);
}
a++;
n /= 10;
}
return result;
}
else if(base == 3){
int a = 0;
while(n > 0){
result += (n%10)%3 * pow(3, a);
a++;
n /= 10;
}
return result;
}
return result;
当我对非常小的数字(例如conv(2,1010))运行此函数时,它会起作用;我得到10(将1010以2为基数转换为10)
但是,如果我想使用10010111011100101101100011011(以2为底),我的代码似乎不起作用。我还有其他方法可以做到吗?

最佳答案

根据要对base-2和base-3数字执行的特定操作,仅对字符串值进行操作可能是可行的。优点是您几乎不受限制。
读取输入数字作为字符串。编写一个函数,以验证给定的字符串在给定的基数中是否为有效数字。然后编写这些操作以处理字符串。加法和减法将很容易,但是乘法和除法将需要更多步骤。如果您需要处理三角函数和先验函数,那么这将是一个困难但可行的数学问题。基本上,您想精确地执行手工执行操作时要执行的步骤,并附带携带和借用。

关于c++ - 输入巨大的二进制数C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64509374/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com