nyoj 206-사각형의 개수------[dp 또는 공식]
1376 단어 dp
직사각형의 개수
시간 제한:
1000ms | 메모리 제한: 65535KB
난이도:
1
묘사
3*2의 직사각형 중 1*1의 직사각형 6개, 2*1의 직사각형 4개, 1*2의 직사각형 3개, 2*2의 직사각형 2개, 3*1의 직사각형 2개와 3*2의 직사각형 1개로 총 18개의 직사각형을 찾을 수 있다.
A, B를 주고 그 중에서 몇 개의 직사각형을 찾을 수 있는지 계산해 보세요.
입력
이 문제는 여러 개의 입력 데이터 (<10000) 가 있습니다. EOF까지 처리해야 합니다.
정수 A 2개, B (1<=A, B<=1000) 입력
출력
찾은 직사각형 수를 출력합니다.
샘플 입력
1 2
3 2
샘플 출력
3
18
dp:
#include<bits/stdc++.h>
using namespace std;
long long dp[1100][1100];
int main(){
int A,B,i,j,k;
for(i=1;i<1010;i++){
for(j=1;j<1010;j++){
dp[i][j]=dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]+i*j;
}
}
while(scanf("%d%d",&A,&B)!=EOF){
printf("%lld
",dp[A][B]);
}
return 0;
}
공식:
/* , b , b 1 ,b-1 2 , 1, b
(b+b-1+...+2+1)
,(a+a-1+...+2+1), , b b*a, b*(a-1)
。。。
(b+b-1+...+2+1)*(a+a-1+...+2+1)
=(b+1)*b/2 * (a+1)*a/2
*/
#include <stdio.h>
int main() {
float a, b;
while ( scanf ( "%f%f", &a, &b ) + 1 )
printf ( "%.0f
", ( a + 1 ) *a * ( b + 1 ) *b / 4 );
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【경쟁 프로 전형적인 90문】008의 해설(python)의 해설 기사입니다. 해설의 이미지를 봐도 모르는 (이해력이 부족한) 것이 많이 있었으므로, 나중에 다시 풀었을 때에 확인할 수 있도록 정리했습니다. ※순차적으로, 모든 문제의 해설 기사를 들어갈 예정입니다. 문자열...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.