Блог пользователя vatayush

Автор vatayush, 11 лет назад, По-английски

How can i solve this question? i wrote the following code but it fails for larger test cases:

#include<bits/stdc++.h>
using namespace std;
int main()
{
  while(1)
  {
    long long sum;
    cin>>sum;
    long long int n=sqrt(sum);
    int h=0,len=999999999;
    for(int i=n;i<=2*n;i++)
    {
      //printf("%d\n",i);
      int fh=(i*(i+1))/2;
      if(fh>sum)
	break;
      if(fh==sum)
      {
	if(len>n)
	{
	  cout<<len<<endl;
	  h=i;
	  len=i;
	}
      }
      long long int rem=sum-fh;
      long long int a=2*(i-1)+1;
      if(a*a-8*rem>=0)
      {
	long long int r=(a+sqrt((a*a)-(8*rem)))/2;
	if(2*rem==r*(2*(i-1)+(r-1)*-1))
	{
	  if(len>i+r)
	  {
	    len=i+r;
	    cout<<len<<' '<<i<<endl;
	  }
	}
	if(a>sqrt(a*a-8*rem))
	{
	  long long int r=(a-sqrt((a*a)-(8*rem)))/2;
	  if(2*rem==r*(2*(i-1)+(r-1)*-1))
	  {
	    if(len>i+r)
	    {
	    len=i+r;
	    cout<<len<<' '<<i<<endl;
	    }
	  }
	}
      }
    }
    printf("%d\n",len);
  }
  return 0;
}

	

please help? Edit: sorry, the question was not visible earlier.Now it's visible.

  • Проголосовать: нравится
  • 0
  • Проголосовать: не нравится

»
11 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

I guess "int fh=(i*(i+1))/2;" is one of bug.