Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
请高手帮忙看看In Reply To:我对拍没有发现错误啊,为什么Wrong Answer Posted by:foranswer at 2006-09-09 15:08:21 > #include <iostream> > #include <cmath> > > using namespace std; > > #define MAX 1000 > > __int64 x[MAX], k[MAX]; > > int main() > { > __int64 n, i, j, num, t, a, b, c, deta, x1, x2; > while(scanf("%I64d", &n) != EOF) > { > t = 0, num = 0; > while((t + 1) * (t + 2) * (2 * t + 3) <= 6 * n) > { > a = t + 1, b = t * (t + 1), c = (t * (t + 1) * (2 * t + 1)) / 6 - n; > deta = b * b - 4 * a * c; > if(deta >= 0) > { > __int64 temp = (__int64) sqrt(deta); > if(temp * temp == deta && temp > b && ((-1) * b + temp) % (2 * a) == 0) > { > x1 = ((-1) * b + temp) / (2 * a); > x2 = ((-1) * b - temp) / (2 * a); > x[num] = x1; > k[num] = t + 1; > __int64 sum = 0; > for(i = 0; i < t + 1; i++) > { > sum += x1 * x1; > x1++; > } > if(sum == n) > { > num++; > } > } > } > t++; > } > printf("%I64d\n", num); > for(i = num - 1; i >= 0; i--) > { > printf("%I64d ", k[i]); > for(j = 0; j < k[i]; j++) > { > printf("%I64d ", x[i]++); > } > putchar('\n'); > } > } > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator