단순구현부터 해봤는데 역시 TLE난다.
#include <string>
#include <vector>
using namespace std;
typedef long long ll;
// 뭐지 단순 구현문제인가.. long long이라 아닐거 같기도 하고 흠..
long long solution(int _k, int _d) {
ll k=_k,d=_d;
ll answer = 0;
//일단 단순 구현해보자.
for(ll a=0;a<1000000;a++)for(ll b=0;b<1000000;b++){
if(k*k*a*a+k*k*b*b<=d*d) {
//printf("(%d,%d),", a*k,b*k);
answer++;
}
else break;
}
return answer;
}
#include <string>
#include <vector>
#include <cmath>
using namespace std;
typedef long long ll;
// 뭐지 단순 구현문제인가.. long long이라 아닐거 같기도 하고 흠..
long long solution(int _k, int _d) {
ll k=_k,d=_d;
ll answer = 0;
//일단 단순 구현해보자.
for(ll a=0;a<1000000;a++) {
ll s = d*d-a*a*k*k;
if(s<0) continue;
double bb = sqrt((double)s)/(double)k;
//if(bb<0) continue;
//printf("%lld\n", bb);
answer+=bb+1;
}
return answer;
}
이건 일부 케이스WA나네..
#include <string>
#include <vector>
#include <cmath>
using namespace std;
typedef long long ll;
long long solution(int _k, int _d) {
ll k=_k,d=_d;
ll answer = 0;
for(ll a=0;a<=1000000;a++) {
ll s = d*d-a*a*k*k;
if(s<0) break;
ll bb = sqrt(s)/k;
answer+=bb+1;
}
return answer;
}
뭐지? 1000000포함안시킨거랑 double연산 때문에 WA났던거네?
double연산시 오류나는건 좀 그렇네.. 흠..
아이디어 자체는 chatGPT랑 동일하다.
#include <string>
#include <vector>
#include <cmath>
using namespace std;
typedef long long ll;
long long solution(int _k, int _d) {
ll k=_k,d=_d;
ll answer = 0;
for(ll a=0;a<=1000000;a++) {
ll s = d*d-a*a*k*k;
if(s<0) break;
double bb = (double)sqrt(s)/k;
answer+=(ll)(bb+1e-9)+1;
}
return answer;
}
double은 위처럼 하면 되는거 보니, 형변환시 문제인거 같다. 2.0이 1.999로 되는등..
반응형
'Programming > Problem Solving' 카테고리의 다른 글
python 기본(PS용) (0) | 2025.03.14 |
---|---|
프로그래머스 - 유사 칸토어 비트열 (0) | 2025.03.09 |
cph (0) | 2024.07.21 |
double과 관련된 핸들링 (0) | 2021.12.26 |
백준 4103 ATM (0) | 2020.05.05 |