这道题挺恶心,闹得我都快要放弃了,最后憋一憋也正出来了,这是对耐性的考验
#include<iostream>
using namespace std;
#define N 1000000
int a[N];
int main()
{
a[1]=1;
for(int i=2;i<N;i++)
a[i]=1-a[i-1];//用数组标记来回方向
int x;
int sum=0;
int sign=0;
int cou;
int i,j;
int temp;
while(cin>>x)
{
for( i=1;i<N;i++)
{
sum=0;
for( j=1;j<=i;j++)
{
sum+=j;
if(sum==x)//特别注意要考虑相等的时候
{
sum=x;
sign=1;
cou=i;
temp=i;
break;
}
if(sum>x)
{
sum-=j;
sign=1;
cou=i;
temp=i;
break;
}
}
if(sign==1)
{
sign=0;
break;
}
}
// cout<<cou<<endl<<temp<<endl<<sum;
// system("pause");
if(a[temp])
{
if(x!=sum)//相等的时候特殊处理
printf("TERM %d IS %d/%d/n",x,cou+1-(x-sum),cou+1-(cou+1-(x-sum)));
else
printf("TERM %d IS %d/%d/n",x,(x-sum+1),cou);
}
else
{
if(x==sum)
printf("TERM %d IS %d/%d/n",x,cou,(x-sum+1));
else
printf("TERM %d IS %d/%d/n",x,x-sum,cou+1-(x-sum));
}
}
return 0;
}