uva 11542 Square (高斯消元)
来源:互联网 发布:vb串口校验和 编辑:程序博客网 时间:2024/06/05 19:53
题意:
求n个数抽任意数组成的集合满足里面都是平方数的个数。
题解:
分解质因数,列方程,求自由变元个数。
#include<iostream>#include<math.h>#include<stdio.h>#include<algorithm>#include<string.h>#include<vector>#include<queue>#include<map>#include<set>#include<stack>#include<string>#define B(x) (1<<(x))using namespace std;typedef long long ll;typedef unsigned long long ull;void cmax(int &a,int b){ if(b>a)a=b; }void cmin(int &a,int b){ if(b<a)a=b; }void cmax(ll &a,ll b){ if(b>a)a=b; }void cmin(ll &a,ll b){ if(b<a)a=b; }void add(int &a,int b,int mod){ a=(a+b)%mod; }void add(ll &a,ll b,ll mod){ a=(a+b)%mod; }void add(int &a,int b){ a+=b; }void add(ll &a,ll b){ a+=b; }const int oo=0x3f3f3f3f;const double eps = 1e-8;const ll MOD = 10007;const int maxn = 501;int maze[maxn][maxn];ll a[maxn];bool f[maxn];int p[maxn], cnt;void prime(){ cnt = 0; memset(f, true, sizeof f); for(int i = 2; i < maxn; i++){ if(!f[i]) continue; p[cnt++] = i; for(int j = i * i; j < maxn; j += i) f[j] = false; }}ll Gauss(int n, int m){ int r = 0, c = 0; while(r < n && c < m){ int id = r; for(int i = r + 1; i < n; i++) if(maze[i][c] > maze[id][c]) id = i; if(id != r){ for(int j = c; j <= m; j++) swap(maze[id][j], maze[r][j]); } if(maze[r][c] != 0){ for(int i = r + 1; i < n; i++){ if(maze[i][c] == 0) continue; for(int j = c; j <= m; j++) maze[i][j] ^= maze[r][j]; } r++; } c++; } return (1LL << (m - r)) - 1;}int main(){ //freopen("E:\\read.txt", "r", stdin); int n, m, u, v, T; prime(); scanf("%d", &T); while(T--){ scanf("%d", &m); for(int i = 0; i < m; i++) scanf("%lld", &a[i]); n = 0; memset(maze, 0, sizeof maze); for(int i = 0; i < cnt; i++){ for(int j = 0; j < m; j++){ while(a[j] % p[i] == 0){ maze[i][j] ^= 1; a[j] /= p[i]; cmax(n, i + 1); } } } printf("%lld\n", Gauss(n, m)); } 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中处理崩溃异常
- poj 1328(贪心)
- 多线程死锁调试小技巧
- iOS 上传头像 裁剪
- 浩易南:成功和环境有关吗
- uva 11542 Square (高斯消元)
- 千术教程,千术揭秘,麻将技巧,扑克千术揭秘
- Python之函数
- OSCache源码阅读(一)
- 栈帧,局部变量表,操纵数栈()
- MBProgressHUD的基本使用
- Majority Element
- 【用户界面:jQWidgets探索之路系列】之一:开篇简介
- 指针函数与函数指针的区别