给定序列 s: 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, . ..对于自然数k,0< k <=1000,确定s序列中k位置上元素的值。示例:对于 k=2,值为 1,对于 k=8,值为 2
这是代码:
#include<fstream.h>
#include<math.h>
ofstream f("sir.out");
float Equation (int a, int b, int c)
{ int d;
  float x1,x2;
  d=b*b-4*a*c;
  if(d<0) return -32000;
  else if(d==0) { x1=-b/(2*a);
              if(x1>0) return x1;
              else return -32000;
            }
   else { x1=(-b-sqrt(d))/(2*a);
          x2=(-b+sqrt(d))/(2*a);
          if(x1>x2) if(x1>0) return x1;
                    else return -32000;
          else if(x2>0) return x2;
               else return -32000;
        }
}
void main()
{ int k,n;
  float x;
  cin>>k;
  x=Equation(1,1,-2*k);
  n=x*(x+1)/2;
  if(n==x) f<<n;
  else f<<k-n*(n+1)/2;
  f.close();
}
能否请您解释一下这是如何工作的?我了解该功能,但我不确定如何获得该值...