SGU 200.Cracking RSA(高斯消元)
时间限制:0.25s
空间限制:4M
题意:
给出了m(<100)个数,这m个数的质因子都是前t(<100)个质数构成的。
问有多少个这m个数的子集,使得他们的乘积是完全平方数。
Solution:
要使乘积为完全平方数,那么对于乘积的每个质因子的个数要为偶数。
可以先打出前100个质数,来看第i个质数Pi,对于第j个数Kj,如果它含有奇数个质数Pi,那么矩阵A[i][j]的值为1,显然增广矩阵的值应该全为0.
这样就构造出了一个n*m的xor方程组.
利用高斯消元求出变元的个数power
那么答案就是(2^power)-1
wa了几次竟然是因为高精度写错了,真是醉了...
code
/*
解异或方程组
*/
#include <iostream>
#include <vector>
using namespace std;
const int MAXN = ; int prim[MAXN];
vector<int> A[MAXN]; int Gauss (int n, int m) {
int col = , row = , tem, k = ;
for (; col <= m && row <= n; ++col) {
for (tem = ++row; tem <= n && A[tem][col] == ; ++tem);
if (tem > n) {
row--;
continue;
}
if (tem != row) swap (A[tem], A[row]);
for (int i = row + ; i <= n; ++i) {
if (A[i][col])
for (int j = col; j <= m; ++j)
A[i][j] ^= A[row][j];
}
}
return m - row;
}
void init() {
bool vis[] = {};
for (int i = , tol = ; i <= ; ++i)
if (!vis[i]) {
prim[++tol] = i;
for (int j = i; j <= ; j += i)
vis[j] = ;
}
}
int n, m;
void output (int x) {
if (x <= ) {
cout << << endl;
return;
}
int C[] = {}, len = ;
for (int i = ; i <= x; ++i) {
for (int j = ; j <= len; ++j)
C[j] <<= ;
C[]++;
for (int t = ; t <= len ; t++)
if (C[t] >= ) {
C[t + ] += C[t] / ;
C[t] %= ;
if (t + > len) len++;
}
}
for (int i = len; i > ; --i)
cout << C[i];
} int main() {
ios::sync_with_stdio ();
init();
cin >> n >> m;
for (int i = ; i < MAXN; i++) A[i].resize (MAXN);
for (int i = , x; i <= m; ++i) {
cin >> x;
for (int j = ; j <= n; ++j)
for (; x % prim[j] == ; x /= prim[j]) A[j][i] ^= ;
}
int power = Gauss (n, m);
output (power);
}
SGU 200.Cracking RSA(高斯消元)的更多相关文章
- SGU 200. Cracking RSA(高斯消元+高精度)
标题效果:鉴于m整数,之前存在的所有因素t素数.问:有多少子集.他们的产品是数量的平方. 解题思路: 全然平方数就是要求每一个质因子的指数是偶数次. 对每一个质因子建立一个方程. 变成模2的线性方程组 ...
- Acdream1217 Cracking' RSA(高斯消元)
题意:给你m个数(m<=100),每个数的素因子仅来自于前t(t<=100)个素数,问这m个数的非空子集里,满足子集里的数的积为完全平方数的有多少个. 一开始就想进去里典型的dp世界观里, ...
- SGU 200 Cracking RSA (高斯消元)
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove 题意:给出m个整理,因子全部为前t个素数.问有多少 ...
- SGU 200. Cracking RSA (高斯消元求自由变元个数)
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=200 200. Cracking RSA time limit per test: ...
- SGU 260.Puzzle (异或高斯消元)
题意: 有n(<200)个格子,只有黑白两种颜色.可以通过操作一个格子改变它和其它一些格子的颜色.给出改变的关系和n个格子的初始颜色,输出一种操作方案使所有格子的颜色相同. Solution: ...
- ACM学习历程—SGU 275 To xor or not to xor(xor高斯消元)
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=275 这是一道xor高斯消元. 题目大意是给了n个数,然后任取几个数,让他们xor和 ...
- SGU 275 To xor or not to xor 高斯消元求N个数中选择任意数XORmax
275. To xor or not to xor The sequence of non-negative integers A1, A2, ..., AN is given. You are ...
- SGU 275 To xor or not to xor (高斯消元)
题目链接 题意:有n个数,范围是[0, 10^18],n最大为100,找出若干个数使它们异或的值最大并输出这个最大值. 分析: 一道高斯消元的好题/ 我们把每个数用二进制表示,要使得最后的异或值最大, ...
- SGU 275 To xor or not to xor(高斯消元)
题意: 从n个数中选若干个数,使它们的异或和最大.n<=100 Solution 经典的异或高斯消元. //O(60*n) #include <iostream> using nam ...
随机推荐
- STM32F072B-DISCO 深入研究 中断系统
STM32F072B-DISCO 是我认为性价比最高的一款CPU的demo系统,以前一直在用PIC的CPU但最近几年ST异军突起,几次课题查找芯片无一例外都是ST,像USB,CAN,ZIGBEE等,S ...
- poj 1228 凸包
题目链接:http://poj.org/problem?id=1228 #include<cstdio> #include<cstring> #include<cmath ...
- sonarQube本机扫描C#项目
因项目需要,需要使用sonarQube对代码进行扫描并查看,因对sonarQube不熟悉,所以先在本机进行查看. 参考了张老师的博客:http://www.cnblogs.com/danzhang/p ...
- python_list和tuple互转
Python中,tuple和list均为内置类型, 以list作为参数将tuple类初始化,将返回tuple类型 tuple([1,2,3,4]) list->tuple 以tuple做为参数, ...
- 用python 装饰器打log
# coding=utf-8 from time import time def logged(when): def log(f,*args,**kargs): prin ...
- 解决wix生成的msi的license对话框空白的问题
今天用Wix做之前写的那个Windows Live Writer的Markdown插件的msi安装包,在wxs文件中用如下的代码添加license文件,结果发现生成msi后license文件框一直是空 ...
- WPF的进度条progressbar,运行时间elapse time和等待spinner的实现
今天用.NET 4.5中的TPL的特性做了个小例子,实现了WPF的进度条progressbar,运行时间elapse time和等待spinner. 先上图吧. 这个例子包含4个实现,分别是同步版 ...
- boost------asio库的使用1(Boost程序库完全开发指南)读书笔记
asio库基于操作系统提供的异步机制,采用前摄器设计模式(Proactor)实现了可移植的异步(或者同步)IO操作,而且并不要求多线程和锁定,有效地避免了多线程编程带来的诸多有害副作用. 目前asio ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(30)-本地化(多语言)
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(30)-本地化(多语言) 我们的系统有时要扩展到其他国家,或者地区,需要更多的语言环境,微软提供了一些解决 ...
- Delphi 颜色转换
http://files.cnblogs.com/xe2011/StringToColor.rar unit Unit1; interface uses Windows, Messages, SysU ...