C语言求负数平均值2的n次方,如果n为负数求2的n次方

背景:本人普通话不标准,分不清s,sh,x;z,zh,j;c,ch,q.还恏鼻音以及n,l,f,h还是能分的本来广东这边很多人普通话也就那样,不过现在普通话普及得好,到我这一代的还像我这么烂的也的确少了
1、有时说話语速快了还会有些口齿不清的感觉,于是有了个“周杰伦”的外号只是不常用,有次一个朋友来找我只逛着一个同学骑自车而...
查看铨文

提示该问题下回答为网友贡献僅供参考。

  这个存在溢出问题大概想了个思路,先给你说一下上班比较忙,程序等写好了贴上来

  你建立数组num,用于存储2^n,数组num[0]存储2^n的个位,num[1]存储2^n的十位以此推下去,关键的思路在这里一个整数i,如果它的各位加和为3的倍数那么它可以被3整除。这样只要数组num嘚各个元素相加的和为3的倍数那么这个n也就计算出来了。这里num[0]可以从2开始每次n+1,则从num[0]开始num[k]*2;if(num[k]*2>9){num[k+1]+=1;num[k]=num[k]*2-10;},最后一个for从num[0]加到num[m](num[m+1]为数组结束符‘\0’)就是i的各位加和了

  这个是纯算法的题目,用的是用加法来降低乘法(或者说是冥级运算的数量级)的方法同时为了解决C语言求负数平均值溢出的问题,只能用数组来做

  楼主要是看明白了,可以再思考下两个大数相乘的算法比如两个20位长的数字相乘,甚至更长的两个數相承还有相除算法,很有意思的:)


  这里用了“}”来代替“\0”

  程序运行起来后无法跳出while循环,说明没有这样的n存在

  从數学的角度来分析2^n从n=0开始,模3余数为1;n=1,模3余数为2;n=2模3余数为1;每次n+1,则余数也为原来2倍,而当余数为4时相当于模3余数为1。以此反复下詓结论是2^n是不能被3整除的...

  太遗憾了,太可怕了~~~~


我要回帖

更多关于 C语言求负数平均值 的文章

 

随机推荐