結果
| 問題 |
No.800 四平方定理
|
| コンテスト | |
| ユーザー |
Jiro_tech15
|
| 提出日時 | 2019-03-22 18:48:21 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 634 ms / 2,000 ms |
| コード長 | 1,071 bytes |
| コンパイル時間 | 666 ms |
| コンパイル使用メモリ | 90,164 KB |
| 実行使用メモリ | 65,876 KB |
| 最終ジャッジ日時 | 2024-09-19 02:31:30 |
| 合計ジャッジ時間 | 10,209 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 30 |
ソースコード
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <string>
#include <math.h>
#include <iomanip>
#include <limits>
#include <list>
#include <queue>
#include <tuple>
#include <map>
using namespace std;
#define MOD (long long int)(1e9+7)
#define ll long long int
#define rep(i,n) for(int i=0; i<(int)(n); i++)
#define reps(i,n) for(int i=1; i<=(int)(n); i++)
#define REP(i,n) for(int i=n-1; i>=0; i--)
#define REPS(i,n) for(int i=n; i>0; i--)
#define INF (int)(1123456789)
#define LINF (long long int)(112345678901234567)
int main(void){
ll n,d;
cin>>n>>d;
vector<ll> xy,zw;
reps(i,n){
reps(j,n){
xy.push_back(i*i+j*j);
zw.push_back(i*i-j*j+d);
}
}
sort(xy.begin(),xy.end());
sort(zw.begin(),zw.end());
int xi=0,zi=0;
ll ans = 0;
while(xi < n*n && zi < n*n){
ll memo = 0;
for(;zi < n*n && zw[zi] <= xy[xi];zi++){
if(zw[zi] == xy[xi]){
memo++;
}
}
ll memo2 = 1;
for(;xi+1 < n*n && xy[xi] == xy[xi+1];){
xi++;
memo2++;
}
ans += memo * memo2;
xi++;
}
cout<<ans<<endl;
return 0;
}
Jiro_tech15