77问答网
所有问题
C语言2^365怎么取模?强制转换long会变成0
如题所述
举报该问题
推荐答案 2013-10-30
365=5*73
73=36*2+1
故假令求余的数为m。且(2,m)=1;
2^365=x(mod m)
(2^5)^73=x(mod m)
(2^5 mod m)^73=x(mod m)
然后不断的拆指数,把左边的值降到整数表达范围以下之后(这个需要判断)求值。
2^365太大。
或者你也可以反过来。
代码思路: (这个可以无视m和2什么关系,及时相等都没问题)
n=1
for(i=1,i<366;i++)
{
n=2*n;
n=n%m;
}
反过来一步一步往上求,绝对不会超值,只要m的平方在最大整数范围以内,应该是能求出答案的。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://77.wendadaohang.com/zd/qpYYGqp8qINvNvqYIq.html
其他回答
第1个回答 2013-10-30
最笨的办法.是自己定义能够存储和进行大数运算的数据结构和算法,用数组来存储大数.实现大数据的加减乘除运算.其实,实现加减运算应该就OK了.
然后再用这一系列的算法完成计算.
聪明点的办法.是从数学上看看该问题是否有合适的计算方法.然后用程序实现一遍.
相似回答
大家正在搜
c语言自动转换和强制转换
c语言long long怎么用
C语言强制转换类型
C语言强制类型转换为整形
c语言强制转换吧
c语言强制转换符
c语言数据类型强制转换
c语言强制转换的缺点
c语言类型强制转换例子