結果
| 問題 |
No.1274 楽しい格子点
|
| ユーザー |
Imperi_Night
|
| 提出日時 | 2020-10-30 22:39:50 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 3,716 bytes |
| コンパイル時間 | 1,900 ms |
| コンパイル使用メモリ | 131,448 KB |
| 最終ジャッジ日時 | 2025-01-15 17:41:42 |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 55 WA * 1 RE * 1 |
ソースコード
#include <algorithm>
#include <array>
#include <bitset>
#include <cassert>
#include <cctype>
#include <chrono>
#include <cmath>
#include <complex>
#include <cstdint>
#include <cstdlib>
#include <deque>
#include <functional>
#include <iomanip>
#include <iostream>
#include <limits>
#include <list>
#include <map>
#include <memory>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <stack>
#include <string>
#include <type_traits>
#include <unordered_map>
#include <utility>
#include <vector>
/* template start */
using i64 = std::int_fast64_t;
using u64 = std::uint_fast64_t;
#define rep(i, a, b) for (i64 i = (a); (i) < (b); (i)++)
#define all(i) i.begin(), i.end()
#ifdef LOCAL
#define debug(...) \
std::cerr << "LINE: " << __LINE__ << " [" << #__VA_ARGS__ << "]:", \
debug_out(__VA_ARGS__)
#else
#define debug(...)
#endif
void debug_out() { std::cerr << std::endl; }
template <typename Head, typename... Tail>
void debug_out(Head h, Tail... t) {
std::cerr << " " << h;
if (sizeof...(t) > 0) std::cout << " :";
debug_out(t...);
}
template <typename T1, typename T2>
std::ostream& operator<<(std::ostream& os, std::pair<T1, T2> pa) {
return os << pa.first << " " << pa.second;
}
template <typename T>
std::ostream& operator<<(std::ostream& os, std::vector<T> vec) {
for (std::size_t i = 0; i < vec.size(); i++)
os << vec[i] << (i + 1 == vec.size() ? "" : " ");
return os;
}
template <typename T1, typename T2>
inline bool chmax(T1& a, T2 b) {
return a < b && (a = b, true);
}
template <typename T1, typename T2>
inline bool chmin(T1& a, T2 b) {
return a > b && (a = b, true);
}
template <typename Num>
constexpr Num mypow(Num a, u64 b, Num id = 1) {
if (b == 0) return id;
Num x = id;
while (b > 0) {
if (b & 1) x *= a;
a *= a;
b >>= 1;
}
return x;
}
template <typename T>
std::vector<std::pair<std::size_t, T>> enumerate(const std::vector<T>& data) {
std::vector<std::pair<std::size_t, T>> ret;
for (std::size_t index = 0; index < data.size(); index++)
ret.emplace_back(index, data[index]);
return ret;
}
/* template end */
i64 extgcd(i64 a, i64 b, i64& x, i64& y) {
for (i64 u = y = 1, v = x = 0; a;) {
i64 q = b / a;
std::swap(x -= q * u, u);
std::swap(y -= q * v, v);
std::swap(b -= q * a, a);
}
return b;
}
int main() {
std::cin.tie(nullptr);
std::ios::sync_with_stdio(false);
i64 a, b;
std::cin >> a >> b;
a = std::abs(a);
b = std::abs(b);
if (a == 0 || b == 0) {
if (b != 0) std::swap(a, b);
long double ans = 0.0l;
rep(n, 1, 101) {
rep(m, 1, 101) {
if((n-1)%a!=0||(m-1)%a!=0)continue;
i64 s = (n-1)%a;
i64 u = (m-1)%a;
s = (s + 2000000000000000000l) % 2;
u = (u + 2000000000000000000l) % 2;
if(s==u)ans += mypow(1.0l / (n + m), n + m);
}
}
std::cout << std::setprecision(19) << ans << "\n";
return 0;
}
i64 g = std::gcd(a, b);
long double ans = 0.0l;
rep(n, 1, 101) {
rep(m, 1, 101) {
if ((n - 1) % g != 0 || (m - 1) % g != 0) continue;
i64 s, t, u, v;
extgcd(a, b, s, t);
s = (s + 2000000000000000000l) % 2;
t = (t + 2000000000000000000l) % 2;
u = s;
v = t;
s *= ((n - 1) / g) % 2;
t *= ((n - 1) / g) % 2;
u *= ((m - 1) / g) % 2;
v *= ((m - 1) / g) % 2;
if ((s + t) % 2 == (u + v) % 2) {
ans += mypow(1.0l / (n + m), n + m);
} else if ((a - b + 2000000000000000000l) % 2 == 1) {
ans += mypow(1.0l / (n + m), n + m);
}
}
}
std::cout << std::setprecision(19) << ans << "\n";
return 0;
}
Imperi_Night