hdoj-2058-the sum problem

3804 단어
제목:the sum problem
accept 코드:
#include<stdio.h>
#include<math.h>//(a+b)*n/2
int main()
{
    int n,i,j,m;
    int t=0,sum=0;
    int k=0,a,b;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        if(n==0 && m==0)break;
        
        for(i=sqrt(2*m);i>0;i--)
        {    
            a=m/i-(i-1)/2;//b-a+1=i, b=a+i-1,      M i(  )  a。
            if((a+a+i-1)*i==2*m)//        ,     
            {
                printf("[%d,%d]
",a,a+i-1); } } /*for(k=i;k<=m;k++) { sum+=k; if(sum>m)break; if(sum==m) { printf("[%d,%d]
",i,k); break; } } sum=0;*/ printf("
"); } return 0; }
처음에 폭력을 시도했을 때 두 개의 for순환을 사용했는데 과연 T가 아니었다. 사실 이 물문제는 누적과 빠른 계산에 주목할 만한 부분이다.고등학교 수학을 1년 가까이 멀리한 나는 등차수열의 공식을 자연히 잊어버렸다.이런 유형의 문제를 해결하려면 일정한 수학적 기초가 필요하다.
내 이전 블로그 a1=?,이 문제보다 훨씬 복잡하다.이 문제와 유사하게 시간을 절약하기 위해 디자인된 문제도 있다.

좋은 웹페이지 즐겨찾기