gpt4 book ai didi

c - 以 N 为基数的除法

转载 作者:行者123 更新时间:2023-11-30 17:07:03 26 4
gpt4 key购买 nike

我想知道 C 语言中是否有一个特定的算法可以做到这一点。不过,我想出了一些方法。

问题:我有 2 个以 7 为基数的数字。这些数字是可整除的,所以我的答案始终是整数。我想计算商。

最简单的方法可能是将我以 10 为基数的两个数字从 7 基数转换为基数,然后使用/运算符正常除法,然后将答案重新转换回以 7 为基数。

这种方法有很多缺点,耗时过长,而且最主要的是溢出。如果被除数的长度超过大约 (17-19),则转换为基数 10 时的数字将不适合 long long int。

看了很多内容后,完成上述操作的一个简单方法是重复乘法。实现例202和13我可以在基数 7 中重复添加 13,直到需要添加多次才能得到 202。这就是答案。然而我无法思考如何将这些相乘。

我要寻求什么帮助?:用于两个数字相除的算法/伪代码或代码(C/C++,因为这是我唯一知道的语言),并获得以 7 为底的商。结果将是一个完全整数。

非常感谢。

#define max 2000

long long int bconvert(long long int x) //conversion from base 7 to decimal
{ long long int i=0,ans=0;
while(x>0)
{
ans+=(x%10)*pow(7,i);
x/=10;
i++;
}
return ans;
}

int main() {
long long int A,B,L,a,b,c,C,arr[max],i,j,k,arr1[max],r;
scanf("%lld %lld %lld",&A,&B)
a=bconvert(A);
b=bconvert(B);
c=a/b; //decimal division
k=0;
C=0;
while(c>0)
{
r=c%7;
c/=7;
C+=r*pow(10,k);
k++;
}
cout<<C<<endl;

输出是以 7 为底的商,与输入形式相同。

最佳答案

您只需实现 long division algorithm直接处理输入字符串。

另一个选项是将数字转换为以 16807 (7**5) 为基数的任意精度整数,以该基数进行除法并将结果转换回以 7 为基数。

关于c - 以 N 为基数的除法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34242436/

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