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

Автор khanaleemullah, 11 лет назад, По-английски

please help me friends.. i want to multpliy a number say x=100000 and y=100000 ; and the result is to be modulo by 1000000007. how should i approach to this i tried everything ...

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

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

Haven't you tried 8-bytes data types? Something like result = (long long) x * y % 1000000007

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

"i tried everything"

:D:D:D:D

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

i think there is no problem with that since x and y are quite small number. just do it straightforward (x*y)%1000000007 . remember use long long in C++. if x and y are too big , you may consider this identity : (a*b)%c = (a%c * b%c )%c . CMIIW

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

Also, if you need to multiply some realy big numbers (say x=1e15, y=1e17), and mod is something like 1e18, you may use this idea:

mult(a,b)%c=mult(a*2%c,b/2)%c for even b

and

mult(a,b)%c=(mult(a,b-1)%c+a)%c for odd b.

It's easy to implement recursively.

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

You can youse BIGMOD