http://www.codechef.com/IOPC2014/problems/IOPC14A
What is the way to solve this problem? Most of solutions seems to check (n!mod (2*b))>=b or not ,whats the reason for this?
http://www.codechef.com/IOPC2014/problems/IOPC14A
What is the way to solve this problem? Most of solutions seems to check (n!mod (2*b))>=b or not ,whats the reason for this?
| # | User | Rating |
|---|---|---|
| 1 | Benq | 3676 |
| 2 | Kevin114514 | 3659 |
| 3 | jiangly | 3640 |
| 4 | turmax | 3450 |
| 5 | tourist | 3408 |
| 6 | strapple | 3360 |
| 7 | Um_nik | 3354 |
| 8 | squareOf105 | 3348 |
| 9 | maroonrk | 3312 |
| 10 | idontwannadothis…e | 3191 |
| # | User | Contrib. |
|---|---|---|
| 1 | Qingyu | 155 |
| 2 | nik_exists | 151 |
| 3 | maspy | 149 |
| 4 | AmShZ | 145 |
| 5 | Um_nik | 143 |
| 6 | Errichto | 139 |
| 7 | BledDest | 136 |
| 8 | adamant | 135 |
| 9 | maroonrk | 132 |
| 10 | cry | 130 |
| Name |
|---|



You can calc the power of 2 in n!(it's n/2+n/4+n/8+...) and power of 2 in b(just divide it by 2 while n%2=0) and compare this values
vintage_Vlad_Makeev your idea is wrong probably because it's integer division. For eg:
a) 12 = 22 * 3 , 8 = 23, (12 / 8 = 1) % 2 = 1
b) 20 = 22 * 5 , 8 = 23, (20 / 8 = 2) % 2 = 0
But powers of 2 in (12, 8) and (20, 8) are same. You could find a similar case for factorials as well.
Each student gets n! / b (integer division) oranges. If n!%(2b) is less than b, then it can be written as 2*k*b + r for some integer k and r < b. Then n!/b is equal to 2*k, so each student gets an even number of oranges. If n!%(2b) is >= b, then it can be written as 2*k*b + r where b <= r < 2*b, or 2*k*b + b + r', where r' = r — b, so 0 <= r' < b. Then, (2*k*b + b + r')/b = 2*k + 1, which is odd.
one more doubt
The above code seems to be finding (a*b)%m ,but we can do directly right .then why coders do so?
Doing it directly could result in overflow.
but can (a%m)*(b%m)%m cause overflow?
Yes because they can both be up to m-1, and m can be up to 10^18
u r so fast in helping ,ty
one more doubt if i dont write long double it gives wa ~~~~~ (long long)((long double)a * (long double)b / (long double)m); ~~~~~
and
whats difference
Long doubles are more precise than doubles, and long longs have a higher range of values than longs.