uva 11542 - Square(高斯消元)
来源:互联网 发布:知乎 豆瓣全部电影 编辑:程序博客网 时间:2024/06/05 09:40
题目链接:uva 11542 - Square
题目大意:给出n个整数,从中选出1个或多个,使得选出的整数乘积为完全平方数,一共有多少种选法。空集不算。
解题思路:大白数例题。
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 500;typedef long long ll;typedef int Matrix[maxn+5][maxn+5];int np, pri[maxn+5], vis[maxn+5];void prime_table (int n) { np = 0; memset(vis, 0, sizeof(vis)); for (int i = 2; i <= n; i++) { if (vis[i]) continue; pri[np++] = i; for (int j = i + i; j <= n; j += i) vis[j] = 1; }}Matrix A;int solve (Matrix a, int m, int n) { int i = 0, j = 0, k, r, u; while (i < m && j < n) { r = i; for (k = i; k < m; k++) if (A[k][j]) { r = k; break; } if (A[r][j]) { if (r != i) { for (k = 0; k <= n; k++) swap(A[r][k], A[i][k]); } for (u = i + 1; u < m; u++) { if (A[u][j]) for (k = i; k <= n; k++) A[u][k] ^= A[i][k]; } i++; } j++; } return i;}int main () { prime_table(maxn); int cas; scanf("%d", &cas); while (cas--) { ll x; int n, maxp = 0; scanf("%d", &n); memset(A, 0, sizeof(A)); for (int i = 0; i < n; i++) { scanf("%lld", &x); for (int j = 0; j < np; j++) { while (x % pri[j] == 0) { maxp = max(maxp, j); x /= pri[j]; A[j][i] ^= 1; } } } int ret = solve(A, maxp+1, n); printf("%lld\n", (1LL<<(n-ret))-1); } return 0;}
0 0
- uva 11542 - Square(高斯消元)
- uva 11542 Square (高斯消元)
- UVA 11542 - Square(高斯消元)
- 高斯消元(Square,UVA 11542)
- uva 11542 Square(数学:高斯消元)
- UVA 11542 - Square
- UVA - 11542 Square
- uva 11542 Square 高斯消元变形+异或消元
- UVA 11542 Square 高斯消元 异或方程组求解
- UVA 11542 Square 乘积是平方数(高斯消元)
- uva 11542 - Square(高斯异或)
- UVA - 11542 Square (异或方程组)
- UVa 11461 - Square Numbers
- UVA 10023 Square root
- UVa 10023 - Square root
- uva 11461 Square Numbers
- UVa 10023 - Square root
- UVa:10364 Square
- Android:判断Android手机当前是否联网
- POJ 1087 A Plug for UNIX(网络流之最大流)
- UVA 437 (POJ 2241) The Tower of Babylon(DP)
- NodeJS开发环境搭建
- HDU-2152 Fruit
- uva 11542 - Square(高斯消元)
- hdu1236
- zoj 2788 网络流sap+最小割
- JavaScript面向对象之类的创建
- JavaScript 异步编程
- AVD那些事儿
- NOJ1437——[1437] Shutdown
- Android工具导航栏
- 剖析IoAttachDevice的实现