2012-11-19 49 views
2

现在我实际上阅读了模块化算术,并设法得到某个数字的最后一个数字。好的。但现在...我如何得到第二位数字?第二个在右边。我实际上一直在努力寻找一个简单的解决方案几个小时,这是迄今为止最好的,但它仍然不是它。请有人帮助我吗?从一个巨大的数字右边的第二个数字

这是我迄今为止

long long powmod(long long n, long long exp) 
{ 
    long long r, result = 1; 

    while(exp) 
    { 
     r = exp % 2; 
     exp /= 2; 
     if(r == 1) result = result * n % 10; 
     n = (n * n) % 10; 
    } 
    return result; 
} 

在此先感谢

+3

如果你知道如何得到右手数字,然后给出一个像1234这样的数字,你会得到123,你已经知道如何得到右手数字? –

回答

1

正如你只问第二位数字,如何获得最后两位数字,然后除以十?

即,解决一个^ n模100,然后看十位数。

+0

谢谢!最简单的解决方案并不总是那么明显:P – ImQ009

3

把它由十位,四舍五入,然后得到一个什么样保持最后一位。 :-)

+0

by“it”,你是指'n^exp'的结果,使用普通的非模幂运算吗?只要结果符合“long long”的范围,这种方法就行得通,但如果OP要求“2^1000”的第二个数字呢? – Kevin

+0

是的,这是问题出在哪里,我知道我可以将它分成十份,但它不会对大数字起作用 – ImQ009

相关问题