Submission #19798

# Submission time Handle Problem Language Result Execution time Memory
19798 2016-02-25T05:44:09 Z mitslll 창문 (kriii4_C) C++
100 / 100
0 ms 1716 KB
#include<cstdio>
#include<iostream>
#include<string>
#include<vector>

using namespace std;
typedef unsigned long long ull;

ull gcd(ull a, ull b){
    return ( a % b == 0 ) ? b : gcd(b, a % b);
}
const ull mod = 1000000007;
struct Solution { ull gcd, x, y;
    Solution(ull gcd, ull x, ull y)
        :gcd(gcd), x(x), y(y)
    {
        
    }
    
    
};
Solution extendedEuclid(ull a, ull b) {
  ull q = a / b, r = a % b;
  if(r == 0) return Solution(b, 0, 1); 
  Solution s = extendedEuclid(b, r);                                                                                                            
  // now, we have
  // s.gcd = s.x * b + s.y * r
  //       = s.x * b + s.y * (a - q * b)
  //       = s.y * a + (s.x - q * s.y) * b
  return Solution(s.gcd, s.y, s.x - q * s.y);
}
int main(){
    ull h, w;
    cin >> h>> w;
    ull bot = 1;
    ull g;
    h = h+2;
    w= w+2;
    
    g=  gcd(h, bot);
    bot /= g;
    h /= g;
    
    g = gcd(w, bot);
    w/= g;
    bot /= g;
    
    h %= mod;
    w %= mod;
    
    ull top = ( h * w ) % mod;
    ull rev = 1;
    if(bot != 1){
        Solution sol = extendedEuclid(bot, mod);
        rev =  sol.x  + mod;
    }
    
    cout << ( top * rev ) % mod << endl;
    
    
    
    
    
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 1716 KB Output is correct
2 Correct 0 ms 1716 KB Output is correct
3 Correct 0 ms 1716 KB Output is correct
4 Correct 0 ms 1716 KB Output is correct
5 Correct 0 ms 1716 KB Output is correct
6 Correct 0 ms 1716 KB Output is correct
7 Correct 0 ms 1716 KB Output is correct
8 Correct 0 ms 1716 KB Output is correct
9 Correct 0 ms 1716 KB Output is correct
10 Correct 0 ms 1716 KB Output is correct
11 Correct 0 ms 1716 KB Output is correct
12 Correct 0 ms 1716 KB Output is correct
13 Correct 0 ms 1716 KB Output is correct
14 Correct 0 ms 1716 KB Output is correct
15 Correct 0 ms 1716 KB Output is correct
16 Correct 0 ms 1716 KB Output is correct
17 Correct 0 ms 1716 KB Output is correct
18 Correct 0 ms 1716 KB Output is correct
19 Correct 0 ms 1716 KB Output is correct
20 Correct 0 ms 1716 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 1716 KB Output is correct
2 Correct 0 ms 1716 KB Output is correct
3 Correct 0 ms 1716 KB Output is correct
4 Correct 0 ms 1716 KB Output is correct
5 Correct 0 ms 1716 KB Output is correct
6 Correct 0 ms 1716 KB Output is correct
7 Correct 0 ms 1716 KB Output is correct
8 Correct 0 ms 1716 KB Output is correct
9 Correct 0 ms 1716 KB Output is correct
10 Correct 0 ms 1716 KB Output is correct
11 Correct 0 ms 1716 KB Output is correct
12 Correct 0 ms 1716 KB Output is correct
13 Correct 0 ms 1716 KB Output is correct
14 Correct 0 ms 1716 KB Output is correct
15 Correct 0 ms 1716 KB Output is correct
16 Correct 0 ms 1716 KB Output is correct
17 Correct 0 ms 1716 KB Output is correct
18 Correct 0 ms 1716 KB Output is correct
19 Correct 0 ms 1716 KB Output is correct
20 Correct 0 ms 1716 KB Output is correct
21 Correct 0 ms 1716 KB Output is correct
22 Correct 0 ms 1716 KB Output is correct
23 Correct 0 ms 1716 KB Output is correct
24 Correct 0 ms 1716 KB Output is correct
25 Correct 0 ms 1716 KB Output is correct
26 Correct 0 ms 1716 KB Output is correct
27 Correct 0 ms 1716 KB Output is correct
28 Correct 0 ms 1716 KB Output is correct
29 Correct 0 ms 1716 KB Output is correct
30 Correct 0 ms 1716 KB Output is correct
31 Correct 0 ms 1716 KB Output is correct
32 Correct 0 ms 1716 KB Output is correct
33 Correct 0 ms 1716 KB Output is correct
34 Correct 0 ms 1716 KB Output is correct
35 Correct 0 ms 1716 KB Output is correct
36 Correct 0 ms 1716 KB Output is correct
37 Correct 0 ms 1716 KB Output is correct
38 Correct 0 ms 1716 KB Output is correct
39 Correct 0 ms 1716 KB Output is correct
40 Correct 0 ms 1716 KB Output is correct