import java.awt.print.Book;
import java.util.*;
class Main {
public static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
int t = sc.nextInt();
for (int i = 0; i < t; i++) {
int n = sc.nextInt();
solve(n);
}
}
public static void solve(int n){
Map<String, Integer> mp = new HashMap<String, Integer>();
double[][] sum = new double[100][100];
int m = 0;
for (int i = 1; i <= n; i++) {
String str = new String(sc.next());
int pos = 0;
while (pos < str.length()){
StringBuilder s = new StringBuilder();
int num = 0;
while (pos < str.length() && str.charAt(pos) >= 'a' && str.charAt(pos) <= 'z'){
s.append(str.charAt(pos));
pos++;
}
while(pos < str.length() && str.charAt(pos) >= '0' && str.charAt(pos) <= '9') {
num = num * 10 + str.charAt(pos) - '0';
pos++;
}
if (!mp.containsKey(s.toString())){
mp.put(s.toString(),++m);
}
sum[mp.get(s.toString())][i] = num;
}
}
int l = 1;
for (int j = 1; j <= m;) {
int flag = 1;
for (int k = j; k <= m; k++) {
if (sum[k][l] != 0){
flag = 0;
}
}
if (flag == 1 && l < m + 1){
l++;
continue;
}
if (sum[j][l] == 0){
int pos = 0;
for (int k = j + 1; k <= m; k++) {
if (sum[k][j] != 0){
pos = k;
break;
}
}
for (int k = 1; k <= n ; k++) {
double tem = sum[j][k];
sum[j][k] = sum[pos][k];
sum[pos][k] = tem;
}
}
for (int k = j + 1; k <= m; k++) {
double tem = sum[k][l] / sum[j][l];
for (int p = l; p <= n; p++) {
sum[k][p] -= sum[j][p] * tem;
}
}
l++;
j++;
}
int rank = 0;
for (int i = 1; i <= m; i++) {
int flag = 1;
for (int j = 1; j <= n; j++) {
if (sum[i][j] != 0){
flag = 0;
}
}
if (flag != 0){
break;
}
rank++;
}
if (rank >= n){
System.out.println("N");
}else {
System.out.println("Y");
}
}
}
第33次CCF计算机软件能力认证——化学方程式配平
最新推荐文章于 2024-06-09 18:24:15 发布