Блог пользователя HridoyHazard

Автор HridoyHazard, история, 2 года назад, По-английски

i came to know this error recently while using pow function for a large data such as

pow(8376260,70)

it giving 0 as output which is wrong. i tried using long and unsigned but it giving the same output. is there any way to use large data in pow function??

  • Проголосовать: нравится
  • -4
  • Проголосовать: не нравится

»
2 года назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Yeah this function is kinda weird so it does problems. Create your own pow function so it doesn't cause problems. Also the numbers you are using are very large so it will overflow

»
2 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

the pow function returns a "double" type.

»
2 года назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

You'd better use binary pow.

const long long MOD = 1e9 + 7;
long long binpow(long long n, long long p){
	long long res = 1;
	while(p) {
		if(p & 1) {
			res *= n;
			res %= MOD;
		}
		p >>= 1;
		n *= n;
		n %= MOD;
	}
	return res;
}