結果
問題 | No.800 四平方定理 |
ユーザー | mai |
提出日時 | 2019-03-17 21:38:04 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 5,411 bytes |
コンパイル時間 | 2,313 ms |
コンパイル使用メモリ | 219,876 KB |
実行使用メモリ | 164,772 KB |
最終ジャッジ日時 | 2024-07-07 21:10:46 |
合計ジャッジ時間 | 27,751 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 7 ms
5,248 KB |
testcase_01 | AC | 12 ms
5,900 KB |
testcase_02 | AC | 9 ms
5,504 KB |
testcase_03 | AC | 10 ms
5,512 KB |
testcase_04 | AC | 8 ms
5,376 KB |
testcase_05 | AC | 10 ms
5,632 KB |
testcase_06 | AC | 14 ms
6,280 KB |
testcase_07 | AC | 11 ms
5,640 KB |
testcase_08 | AC | 15 ms
6,664 KB |
testcase_09 | AC | 13 ms
5,896 KB |
testcase_10 | AC | 637 ms
59,000 KB |
testcase_11 | AC | 891 ms
82,644 KB |
testcase_12 | AC | 828 ms
82,640 KB |
testcase_13 | AC | 798 ms
82,720 KB |
testcase_14 | AC | 931 ms
82,660 KB |
testcase_15 | AC | 890 ms
82,548 KB |
testcase_16 | AC | 953 ms
82,656 KB |
testcase_17 | AC | 930 ms
82,700 KB |
testcase_18 | AC | 842 ms
82,684 KB |
testcase_19 | AC | 854 ms
82,668 KB |
testcase_20 | AC | 2 ms
6,944 KB |
testcase_21 | AC | 2 ms
6,944 KB |
testcase_22 | AC | 822 ms
82,660 KB |
testcase_23 | AC | 1,726 ms
114,596 KB |
testcase_24 | TLE | - |
testcase_25 | AC | 1,656 ms
112,680 KB |
testcase_26 | AC | 2 ms
6,940 KB |
testcase_27 | AC | 2 ms
6,944 KB |
testcase_28 | TLE | - |
testcase_29 | TLE | - |
testcase_30 | AC | 1,833 ms
117,284 KB |
testcase_31 | AC | 1,622 ms
113,060 KB |
testcase_32 | AC | 1,753 ms
116,516 KB |
コンパイルメッセージ
main.cpp: In function 'int main()': main.cpp:15:26: warning: iteration 9223372036854775805 invokes undefined behavior [-Waggressive-loop-optimizations] 15 | #define iterate(cnt,b,e) for(auto cnt=(b);(cnt)!=(e);++(cnt)) | ^~~ main.cpp:124:5: note: in expansion of macro 'iterate' 124 | iterate(z, 1ll, N+1) { | ^~~~~~~ main.cpp:15:48: note: within this loop 15 | #define iterate(cnt,b,e) for(auto cnt=(b);(cnt)!=(e);++(cnt)) | ~~~~~^~~~~ main.cpp:124:5: note: in expansion of macro 'iterate' 124 | iterate(z, 1ll, N+1) { | ^~~~~~~
ソースコード
#pragma GCC optimize ("O3") #include "bits/stdc++.h" using namespace std; using ll = long long int; #define debugos cout #define debug(v) {printf("L%d %s > ",__LINE__,#v);debugos<<(v)<<endl;} #define debugv(v) {printf("L%d %s > ",__LINE__,#v);for(auto e:(v)){debugos<<e<<" ";}debugos<<endl;} #define debuga(m,w) {printf("L%d %s > ",__LINE__,#m);for(int x=0;x<(w);x++){debugos<<(m)[x]<<" ";}debugos<<endl;} #define debugaa(m,h,w) {printf("L%d %s >\n",__LINE__,#m);for(int y=0;y<(h);y++){for(int x=0;x<(w);x++){debugos<<(m)[y][x]<<" ";}debugos<<endl;}} #define all(v) (v).begin(),(v).end() #define repeat(cnt,l) for(auto cnt=decltype(l)();(cnt)<(l);++(cnt)) #define rrepeat(cnt,l) for(auto cnt=(l)-1;0<=(cnt);--(cnt)) #define iterate(cnt,b,e) for(auto cnt=(b);(cnt)!=(e);++(cnt)) #define diterate(cnt,b,e) for(auto cnt=(b);(cnt)!=(e);--(cnt)) const ll MD = 1000000007ll; const long double PI = 3.1415926535897932384626433832795L; inline void assert_call(bool assertion, function<void()> f) { if (!assertion) { cerr << "assertion fault:" << endl; f(); abort(); } } template<typename T1, typename T2> inline ostream& operator <<(ostream &o, const pair<T1, T2> p) { o << '(' << p.first << ':' << p.second << ')'; return o; } template<typename Vec> inline ostream& _ostream_vecprint(ostream& os, const Vec& a) { os << '['; for (const auto& e : a) os << ' ' << e << ' '; os << ']'; return os; } template<typename T> inline ostream& operator<<(ostream& o, const vector<T>& v) { return _ostream_vecprint(o, v); } template<typename T, size_t S> inline ostream& operator<<(ostream& o, const array<T, S>& v) { return _ostream_vecprint(o, v); } template<typename T> inline T& chmax(T& to, const T& val) { return to = max(to, val); } template<typename T> inline T& chmin(T& to, const T& val) { return to = min(to, val); } void bye(string s, int code = 0) { cout << s << endl; exit(code); } mt19937_64 randdev(8901016); template<typename T, typename Random = decltype(randdev), typename enable_if<is_integral<T>::value>::type* = nullptr> inline T rand(T l, T h, Random& rand = randdev) { return uniform_int_distribution<T>(l, h)(rand); } template<typename T, typename Random = decltype(randdev), typename enable_if<is_floating_point<T>::value>::type* = nullptr> inline T rand(T l, T h, Random& rand = randdev) { return uniform_real_distribution<T>(l, h)(rand); } #if defined(_WIN32) || defined(_WIN64) #define getc_x _getc_nolock #define putc_x _putc_nolock #elif defined(__GNUC__) #define getc_x getc_unlocked #define putc_x putc_unlocked #else #define getc_x getc #define putc_x putc #endif #define isvisiblechar(c) (0x21<=(c)&&(c)<=0x7E) class MaiScanner { FILE* fp_; public: inline MaiScanner(FILE* fp):fp_(fp){} template<typename T> void input_integer(T& var) noexcept { var = 0; T sign = 1; int cc = getc_x(fp_); for (; cc < '0' || '9' < cc; cc = getc_x(fp_)) if (cc == '-') sign = -1; for (; '0' <= cc && cc <= '9'; cc = getc_x(fp_)) var = (var << 3) + (var << 1) + cc - '0'; var = var * sign; } inline int c() noexcept { return getc_x(fp_); } inline MaiScanner& operator>>(int& var) noexcept { input_integer<int>(var); return *this; } inline MaiScanner& operator>>(long long& var) noexcept { input_integer<long long>(var); return *this; } inline MaiScanner& operator>>(string& var) { int cc = getc_x(fp_); for (; !isvisiblechar(cc); cc = getc_x(fp_)); for (; isvisiblechar(cc); cc = getc_x(fp_)) var.push_back(cc); return *this; } template<typename IT> inline void in(IT begin, IT end) { for (auto it = begin; it != end; ++it) *this >> *it; } }; class MaiPrinter { FILE* fp_; public: inline MaiPrinter(FILE* fp):fp_(fp){} template<typename T> void output_integer(T var) noexcept { if (var == 0) { putc_x('0', fp_); return; } if (var < 0) putc_x('-', fp_), var = -var; char stack[32]; int stack_p = 0; while (var) stack[stack_p++] = '0' + (var % 10), var /= 10; while (stack_p) putc_x(stack[--stack_p], fp_); } inline MaiPrinter& operator<<(char c) noexcept { putc_x(c, fp_); return *this; } inline MaiPrinter& operator<<(int var) noexcept { output_integer<int>(var); return *this; } inline MaiPrinter& operator<<(long long var) noexcept { output_integer<long long>(var); return *this; } inline MaiPrinter& operator<<(char* str_p) noexcept { while (*str_p) putc_x(*(str_p++), fp_); return *this; } inline MaiPrinter& operator<<(const string& str) { const char* p = str.c_str(); const char* l = p + str.size(); while (p < l) putc_x(*p++, fp_); return *this; } template<typename IT> void join(IT begin, IT end, char sep = ' ') { for (bool b = 0; begin != end; ++begin, b = 1) b ? *this << sep << *begin : *this << *begin; } }; MaiScanner scanner(stdin); MaiPrinter printer(stdout); // ll N, D; // int main(){ scanner >> N >> D; unordered_map<ll, ll> cnt; iterate(x, 1ll, N+1) { iterate(y, 1ll, N+1) { ++cnt[x*x+y*y]; } } ll ans = 0; iterate(z, 1ll, N+1) { iterate(w, 1ll, N+1) { ll r = w*w-z*z+D; ans += cnt[r]; } } cout << ans << endl; return 0; }