[난이도] Gold4
[유형] 구현
[풀이]
소용돌이의 오른쪽 아래 꼭지점은 (2*n+1)^2 라는점을 이용
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int r1,r2,c1,c2;
int getV(int r,int c){
int a = max(abs(r),abs(c));
int v = (2*a+1);
v*=v;
if(a==r) return v-(a-c);
v-=2*a;
if(-a==c) return v-(a-r);
v-=2*a;
if(-a==r) return v-(a+c);
v-=2*a;
return v-(a+r);
}
int main(){
scanf("%d%d%d%d",&r1,&c1,&r2,&c2);
int k = 0;
for(int i=r1;i<=r2;i++){
for(int j=c1;j<=c2;j++){
int v = getV(i,j);
k = max(v,k);
}
}
int t = 0;
while(k>0){
t++;
k/=10;
}
for(int i=r1;i<=r2;i++){
for(int j=c1;j<=c2;j++){
printf("%*d ",t,getV(i,j));
}
puts("");
}
}
github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Gold4/1022.cpp
'Problem-Solving > BOJ' 카테고리의 다른 글
[BOJ/백준][Gold4] 10830 : 행렬 제곱(C++) (0) | 2020.12.12 |
---|---|
[BOJ/백준][Gold4] 1403 : 거짓말(C++) (0) | 2020.12.12 |
[BOJ/백준] 2624: 동전 바꿔주기 (C++) (0) | 2020.07.28 |
[BOJ/백준] 2143: 두 배열의 합(C++) (0) | 2020.07.05 |
[BOJ/백준] 2632 : 피자판매 (C++) (0) | 2020.06.30 |