首页 > 编程知识 正文

c语言中乘法和除法先后,当整数n被6除时,余数为3

时间:2023-05-05 13:43:44 阅读:160594 作者:510

NOI1.13.47大整数除法问题(c )这个问题,一看问题就知道绝不是普通的龙龙或int。 这是高精度啊。

主题47:大整数除法

总time limit :1000 msmemorylimit 336065536 kb

描述

求把大的正整数除以两个的商。

输入

第一行是被除数,第二行是除数。每个数均不超过100位//会不会刺激?

Output

一行,对应的商的整数部分

样品输入

2376

24

样品输出

99

构想首先展示给大家一个立式(回到三年级)

我明白

各位,请不要被样本数据骗了。 不这样做的话,为什么会陷入1.13危机呢? 这是可以破坏龙龙的数字。 必须使用高精度。 我也无能为力。

考虑一下以下两点。

我没说除数一定不是0哦。 请预判。 请用8分9分来看。 出题者真是态度不好啊。 从除法公式中可以看出

a .用大整数整数(int )查一下~

b .关于大整数的减法(代码# include bits/stdc.husingnamespacestd; #与#definetailheadlen2-1//head联动的tail记录除数的末尾指针const int Maxn=10001; int len1,len2,cur=1; char s1[Maxn],s2[Maxn]; int a[Maxn]、b[Maxn]、c[Maxn]、ans[Maxn]; 布尔公司(inthead ) {cur=1; wile(a[cur]==0) cur; 如果去掉//A之前的0,则返回IF(Tail-Cur1Len2); //tail-cur 1是当前字符串的长度if(tail-cur1len2) return 0; string str1=',str2=' '; //比大小for(intI=cur; i=tail; I () {str1 =a[i] 48; str2 =b[i-head 1] 48; (if ) str1=str2) return 1; //使用重载的String类比较else return 0如果小于或等于,则为(intsub ) inthead ) for ) intI=tail; i=tail-len2 1; i-- ()//从后到前依次为a[i]=a[i]-b[i-head 1]; //减法if(a(I )0) ) /如果不够,则为1位的a ) I )=10; a[I-1]----; }}ans[tail]; //统计答复(}int main ) ) Scanf )、s1、s2 1); //长度len1=读取strlen进行处理(s1 ); len2=Strlen(S2; for(intI=1; i=len1; I ) a(I )=S1 ) I )-'0); 读取//for (inti=1; i=len2; I ) b(I )=S2 ) I )-'0); 读取//for (inthead=1; tail=len1; Head(//调查其数量被放置在哪个位置的if (! compare(head ) continue; //A小于b的情况下,进入下一个阶段时将b数向后偏移一个ElseWhile(Compare ) Head ) ) Sub ) Head ); //如果可以减少的话,一边继续减少直到a小于b,一边用tail统计答案(}cur=1; while(ans[cur]==0cur!=len1) cur; //移除上一个0f or (inti=cur; i=len1; I ) printf('%d ',ans[i]; //输出}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。