/* * POJ_2000.cpp * * Created on: 2013年10月24日 * Author: Administrator */ #include#include using namespace std; const int maxn = 5001; long long a[maxn];//a[i] :第i组数字序列的长度 long long s[maxn];//s[i] :前i组数字序列的长度 void prepare(){ int i; a[1] = 1; s[1] = 1; for(i = 2 ; i < 5000 ; ++i){ a[i] = i; s[i] = s[i-1] + a[i]; } } int main(){ prepare(); int n; while(scanf("%d",&n)!=EOF,n){ int i = 1; while(s[i] < n){ i++; } int index = i - 1; int pos = n - s[i - 1]; long long sum = 0; for(i = 1 ; i <= index ; ++i){ sum += a[i]*i; } sum += pos*a[i]; printf("%d %lld\n",n,sum); } return 0; }