bc#54 div2
用小号做的div2
A:竟然看错了排序顺序。。。白白WA了两发
注意读入一整行(包括空格):getline(cin,st) 【gets也是资瓷的
#include<iostream>
using namespace std;
string s[];
int d[];
int T,N; void qsort(int l,int r)
{
int i=l,j=r;
int m=(l+r)/;
int mid=d[m];
while(i<j)
{
while(d[i]<mid) i++;
while(d[j]>mid) j--;
if(i<=j)
{
int tmp=d[i];
d[i]=d[j];
d[j]=tmp;
string ts=s[i];
s[i]=s[j];
s[j]=ts;
i++;
j--;
}
}
if(l<j) qsort(l,j);
if(i<r) qsort(i,r);
} int main()
{
string st;
cin>>T;
while(T--)
{
cin>>N;
for(int i=;i<=N;i++)
{
getline(cin,st);
//cin>>s[i]>>d[i];
int tl=st.length();
int la=st[tl-]-'';
int lb=st[tl-]-'';
int lc=st[tl-]-'';
int ld=st[tl-]-'';
d[i]=ld*+lc*+lb*+la;
//cout<<i<<" "<<d[i]<<endl;
s[i]=st;
} qsort(,N);
for(int i=N;i>=;i--)
{
//cout<<s[i]<<endl;
int tl=s[i].length();
string tms=s[i];
for(int j=;j<=tl-;j++)
cout<<tms[j];
cout<<endl;
}
}
}
B:自己YY的方法
其实就是找乘积的最小非质数因子
先判断无解的情况:所有数都是1 or 只有一个非1的数且是质数,剩下的都是1
若有解:对每个a[i]都分解质因子,找出每个a[i]最小的和第二小的质因子
然后把所有的质因子们放一起排序,取最小的两个相乘既是解。
#include<iostream>
#include<algorithm>
#include<cstring>
#include<ctime>
using namespace std;
#define LL long long
int T,N;
LL a[];
LL sm[]; //**********************************************
// pollard_rho算法进行质因素分解
//*********************************************
long long factor[];//质因素分解结果(刚返回时是无序的)
//注意factor里是每个质因数。比如N=8,那么factor[0..2]={2,2,2} (2^3=8)
int tol;//质因素的个数,编号0~tol-1 const int S = ; //随机算法判定次数,一般8~10就够了
//计算ret = (a*b)%c
long long mult_mod(long long a,long long b,long long c)
{
a %= c;
b %= c;
long long ret = ;
long long tmp = a;
while(b)
{
if(b & )
{
ret += tmp;
if(ret > c)ret -= c;//直接取模慢很多
}
tmp <<= ;
if(tmp > c)tmp -= c;
b >>= ;
}
return ret;
}
//计算 ret = (a^n)%mod
long long pow_mod(long long a,long long n,long long mod)
{
long long ret = ;
long long temp = a%mod;
while(n)
{
if(n & )ret = mult_mod(ret,temp,mod);
temp = mult_mod(temp,temp,mod);
n >>= ;
}
return ret;
}
//通过 a^(n-1)=1(mod n)来判断n是不是素数
// n-1 = x*2^t中间使用二次判断
//是合数返回true,不一定是合数返回false
bool check(long long a,long long n,long long x,long long t)
{
long long ret = pow_mod(a,x,n);
long long last = ret;
for(int i = ; i <= t; i++)
{
ret = mult_mod(ret,ret,n);
if(ret == && last != && last != n-)return true;//合数
last = ret;
}
if(ret != )return true;
else return false;
}
//**************************************************
bool Miller_Rabin(long long n)
//是素数返回true,(可能是伪素数)
//不是素数返回false
{
if(n==) return true;
if( n < )return false;
if( n == )return true;
if( (n&) == )return false;//偶数
long long x = n - ;
long long t = ;
while( (x&)== )
{
x >>= ;
t++;
}
rand();/* *************** */
for(int i = ; i < S; i++)
{
long long a = rand()%(n-) + ;
if( check(a,n,x,t) )
return false;
}
return true;
} long long gcd(long long a,long long b)
{
long long t;
while(b)
{
t = a;
a = b;
b = t%b;
}
if(a >= )return a;
else return -a;
}
//出一个因子
long long pollard_rho(long long x,long long c)
{
long long i = , k = ;
srand(time(NULL));
long long x0 = rand()%(x-) + ;
long long y = x0;
while()
{
i ++;
x0 = (mult_mod(x0,x0,x) + c)%x;
long long d = gcd(y - x0,x);
if( d != && d != x)return d;
if(y == x0)return x;
if(i == k)
{
y = x0;
k += k;
}
}
}
//对 n进行素因子分解,存入factor. k设置为107左右即可
void findfac(long long n,int k)
{
if(n == )return;
if(Miller_Rabin(n))
{
factor[tol++] = n;
return;
}
long long p = n;
int c = k;
while( p >= n)
p = pollard_rho(p,c--);//值变化,防止死循环k
findfac(p,k);
findfac(n/p,k);
} int main()
{
cin>>T;
while(T--)
{
cin>>N;
int acc=,occ=;
for(int i=;i<=N;i++)
{
cin>>a[i];
if(Miller_Rabin(a[i])) acc++;
if(a[i]==) occ++;
}
if(((occ==N-)&&(acc==))||(occ==N))
cout<<"-1"<<endl;
else
{
int tot=;
for(int i=;i<=N;i++)
{
tol = ;
memset(factor,,sizeof(factor));
findfac(a[i],);
//此时factor[0..tol-1]存放的就是所有质因数(无序)
sort(factor,factor+tol);
//cout<<a[i]<<" "<<tol<<endl;
//cout<<factor[0]<<factor[1]<<factor[2]<<endl;
if(factor[]!=)
{
tot++;
sm[tot]=factor[];
}
if(factor[]!=)
{
tot++;
sm[tot]=factor[];
}
}
sort(sm+,sm+tot+);
cout<<sm[]*sm[]<<endl;
} }
}
bc#54 div2的更多相关文章
- BC 52 div2 A Victor and Machine
简单数学题,把这道题目贴上去的不过为了不想看到这个月写了某个数字篇博客,该数字有点不吉利... 近期没有学习的欲望.. . 集中不了注意力,今天打BC还是做出来一题,尽管涨分了,真心希望能接近cf的水 ...
- linux BC命令行计算器
1. 基本使用: $ bc <<< 5*4 20 $ bc <<< 5+4 9 $ bc <<< 5-4 1 或者 $ echo "5* ...
- Hibernate配置文档详解
Hibernate配置文档有框架总部署文档hibernate.cfg.xml 和映射类的配置文档 ***.hbm.xml hibernate.cfg.xml(文件位置直接放在src源文件夹即可) (在 ...
- es6的let,const
1.es6 新增的let const 命令 let用来定义一个局部变量,故名思意就是只在当前代码块可用 1.1 let 声明的变量不存在变量提升(var 声明的变量存在变量提升)且代码块内 暂时性死区 ...
- RSA简介
RSA概述 首先看这个加密算法的命名.很有意思,它其实是三个人的名字.早在1977年由麻省理工学院的三位数学家Rivest.Shamir 和 Adleman一起提出了这个加密算法,并且用他们三个人姓氏 ...
- linux下Tomcat+OpenSSL配置单向&双向认证(自制证书)
背景 由于ios将在2017年1月1日起强制实施ATS安全策略,所有通讯必须使用https传输,本文只针对自制证书,但目前尚不确定自制证书是否能通过appstore审核. 1.必须支持传输层安全(TL ...
- TLS握手
http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html 1994年,NetScape公司设计了SSL协议(Secure Sockets Layer)的1 ...
- BC div2补题以及 复习模除 逆元__BestCoder Round #78 (div.2)
第一题没话说 智商欠费 加老柴辅导终于过了 需要在意的是数据范围为2的63次方-1 三个数相加肯定爆了 四边形的定义 任意边小于其余三边之和 换句话说就是 最长边小于其余三边之和 这样的话问题转化为 ...
- 一场BC的台前幕后
#define BC BestCoder 一场BC的台前幕后 起源大概是这种:一个月前的BC#75结束后,AK的人非常多,于是CodeVS群里非常多人吐槽BC#75的质量,这时YJQ对KPM说:&qu ...
随机推荐
- TFS源代码管理原则
1.工作开始初次打开解决方案是应向服务器请求更新代码.2.工作结束时,应向服务器签入最新代码,并保证解决方案能够编译通过.3.不要长时间签出项目或解决方案,当向项目添加新项目后为编辑任何程序代码时,应 ...
- 第一次写博客Poj1044
Date bugs Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 3005 Accepted: 889 Descript ...
- URL无法显示某些特殊符号
URL无法显示某些特殊符号,这个时候就要使用编码了.编码的格式为:一个百分号,后面跟对应字符的ASCII(16进制)码值.例如 空格的编码值是"%20".(ASCII参考)URL中 ...
- MongoDB学习笔记~为IMongoRepository接口添加了排序和表达式树,针对官方驱动
回到目录 MongoDB的官方驱动,语法更好,更强 之前写过关于IMongoRepository仓储的文章,在mongodb的驱动选择上使用了NoRM,但是进行$ref引用类型导航时出现了问题,它对引 ...
- ARM汇编与C混合编程
GNU内联汇编 内联汇编即在C中直接使用汇编语句进行编程,使程序可以在C程序中实现C语言不能完成的一些工作,例如,在下面几种情况中必须使用内联汇编或嵌入型汇编 程序中使用饱和算术运算(Saturati ...
- 使用 python 获取 httpd 程序所占用物理内存
#!/usr/bin/env python #encoding: utf-8 ''' 思路: /proc/xx_pid/status 文件中的关键字段 VmRSS 来获取某个进程占用的物理内存 步骤: ...
- 【转载】4412开发板嵌入式QtE应用开发环境搭建
本文转自迅为iTOP-4412开发板实战教程书籍:http://topeetboard.com QtE应用需要使用开发工具qtcreator,本文介绍qtcreator-3.2.2的安装和使用.1. ...
- css3实现循环执行动画,且动画每次都有延迟
一.最终效果 需求:gift图片的小动画每隔2s执行一次. 需求就一句话,我们看一下实现过程. 二.实现过程 1.网页结构 <!DOCTYPE html> <html lang=&q ...
- 阅读Real-Time O(1) Bilateral Filtering 一文的相关感受。
研究双边滤波有很长一段时间了,最近看了一篇Real-Time O(1) Bilateral Filtering的论文,标题很吸引人,就研读了一番,经过几天的攻读,基本已理解其思想,现将这一过程做一简单 ...
- o(1)复杂度之双边滤波算法的原理、流程、实现及效果。
一.引言 双边滤波在图像处理领域中有着广泛的应用,比如去噪.去马赛克.光流估计等等,最近,比较流行的Non-Local算法也可以看成是双边滤波的一种扩展.自从Tomasi et al等人提出该 ...