标签:sicily
Time Limit: 1 secs, Memory Limit: 256 MB
Once upon a time, there existed a sequence A consisting of N positive integers. You don‘t know the sequence itself, but you do know the sum of every two elements of the sequence. Find the sequence A!
The first line of input contains the positive integer N (2 ≤ N ≤ 1000).
Each of the following N lines contains N positive integers smaller than or equal to 100 000, forming the table S. The following relations hold: S(i, j) = A[i] + A[j] for i ≠ j, and S(i, j) = 0 for i = j. Here S(i, j) denotes the number in the ith row and jth
column of the table, and A[i] denotes the ith element of the sequence A.
It is guaranteed that for any input data set there exists a unique sequence of positive integers A with the given properties.
The first and only line of output must contain the required sequence A (in the form of N space-separated positive integers).
2 0 2 2 0
1 1
2013年每周一赛第十四场
这道题还是蛮好玩的,构造方程,求解,注意这里要构造三个方程,
#include <iostream> #include <algorithm> #include <stdio.h> #include <string.h> #include <string> using namespace std; int s[1005][1005]; int main() { int i, j, k, a[1005], n; scanf("%d", &n); for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { scanf("%d", &s[i][j]); } } memset(a, 0, sizeof(a)); /*for (i = 0; i < n && n >= 3; i++) { for (j = i + 1; j < n; j++) { for (k = j + 1; k < n; k++) { a[i] = (s[i][j] - s[j][k] + s[k][i]) / 2; a[j] = s[i][j] - a[i]; a[k] = s[i][k] - a[i]; } } }*/ if (n >= 3) { a[0] = (s[0][1] - s[1][2] + s[2][0]) / 2; a[1] = s[0][1] - a[0]; for (k = 2; k < n; k++) { a[k] = s[0][k] - a[0]; } } if (n == 2) { printf("1 1\n"); } else { printf("%d", a[0]); for (i = 1; i < n; i++) { printf(" %d", a[i]); } printf("\n"); } return 0; }第二遍,读入2n + 1个数就可以求解,程序还没输入完成我就输出,能不快吗?也就是第一行第二个数,第二行第三个数,第三行第一个数(0s):
#include <iostream> #include <algorithm> #include <stdio.h> #include <string.h> #include <string> using namespace std; int main() { int i, k, a[2], n, temp, s[1005], s12, s20; scanf("%d", &n); /*for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { scanf("%d", &s[i][j]); } }*/ memset(a, 0, sizeof(a)); /*for (i = 0; i < n && n >= 3; i++) { for (j = i + 1; j < n; j++) { for (k = j + 1; k < n; k++) { a[i] = (s[i][j] - s[j][k] + s[k][i]) / 2; a[j] = s[i][j] - a[i]; a[k] = s[i][k] - a[i]; } } }*/ if (n >= 3) { for (i = 0; i < n; i++) { scanf("%d", &s[i]); } for (i = 0; i < n + 1; i++) { scanf("%d", &temp); if (i == 2) s12 = temp; if (i == n) s20 = temp; } a[0] = (s[1] - s12 + s20) / 2; a[1] = s[1] - a[0]; printf("%d %d", a[0], a[1]); for (k = 2; k < n; k++) { printf(" %d", s[k] - a[0]); } printf("\n"); } if (n == 2) { printf("1 1\n"); } return 0; }
标签:sicily
原文地址:http://blog.csdn.net/u012925008/article/details/44739887