几天没敲代码。。手生了。。。
#include<iostream>
#include<vector>
#include<algorithm>
#include<cstdio>
#include<queue>
#include<stack>
#include<string>
#include<map>
#include<set>
#include<cmath>
#include<cassert>
#include<cstring>
#include<iomanip>
using namespace std;
#ifdef _WIN32
#define i64 __int64
#define out64 "%I64d\n"
#define in64 "%I64d"
#else
#define i64 long long
#define out64 "%lld\n"
#define in64 "%lld"
#endif
/************ for topcoder by zz1215 *******************/
#define FOR(i,a,b) for( int i = (a) ; i <= (b) ; i ++)
#define FFF(i,a) for( int i = 0 ; i < (a) ; i ++)
#define FFD(i,a,b) for( int i = (a) ; i >= (b) ; i --)
#define S64(a) scanf(in64,&a)
#define SS(a) scanf("%d",&a)
#define LL(a) ((a)<<1)
#define RR(a) (((a)<<1)+1)
#define pb push_back
#define CL(Q) while(!Q.empty())Q.pop()
#define MM(name,what) memset(name,what,sizeof(name))
#define read freopen("in.txt","r",stdin)
#define write freopen("out.txt","w",stdout)
#define MAX 10000
#define base 10000
#define digit 4
const int inf = 0x3f3f3f3f;
const i64 inf64 = 0x3f3f3f3f3f3f3f3fLL;
const double oo = 10e9;
const double eps = 10e-9;
const double pi = acos(-1.0);
const int maxn = 10001;
struct bigint
{
int c[MAX];
int len;
void init()
{
len = 0;
memset(c,0,sizeof(c));
}
bigint()
{
init();
len = 1;
}
bigint(int n)
{
init();
do {
c[len++] = n%base;
n /= base;
} while(n);
}
bigint(char* s)
{
init();
for(int i=strlen(s);i>=0;i--)
c[i/4] = c[i/4]*10 + c[i] - '0';
}
bigint(const bigint & n)
{
*this = n;
}
bigint & operator = (const bigint & a)
{
len = a.len;
for(int i=0;i<len;i++) c[i] = a.c[i];
return *this;
}
bigint operator + (const bigint & a) const
{
bigint t;
t.len = max(a.len,len);
for(int i=0;i<t.len;i++)
t.c[i] = c[i]+a.c[i];
for(int i=0;i<t.len;i++)
t.c[i+1] += t.c[i]/base, t.c[i] %= base;
if(t.c[t.len]) t.len++;
return t;
}
bigint operator * (const bigint & a) const
{
bigint t;
t.len = a.len+len+2;
for(int i=0;i<len;i++) for(int j=0;j<a.len;j++)
{
t.c[i+j] += c[i]*a.c[j];
t.c[i+j+1] += t.c[i]/base;
t.c[i+j] %= base;
}
for(int i=0;i<t.len;i++)
{
t.c[i+1] += t.c[i]/base;
t.c[i] %= base;
}
while(!t.c[t.len-1]) t.len--;
return t;
}
void out()
{
printf("%d",c[len-1]);
for(int i=len-2;i>=0;i--)
{
printf("%04d",c[i]);
}
}
friend ostream & operator << (ostream & os,const bigint & a)
{
os << a.c[a.len - 1];
for(int i = a.len - 2;i>=0;i--)
{
os.width(digit);
os.fill('0');
os << a.c[i];
}
return os;
}
friend istream & operator >> (istream & is,bigint & a)
{
char s[MAX*4+1];
is>>s;
bigint t(s);
a = t;
return is;
}
};
bigint ans1,ans2;
int n;
int s[maxn];
int sx[maxn];
vector<int>p;
vector<int>v;
vector<int>t;
int u[1001];
int d[1001];
i64 gcd(i64 _a, i64 _b)
{
if (!_a || !_b)
{
return max(_a, _b);
}
i64 _t;
while ((_t = _a % _b))
{
_a = _b;
_b = _t;
}
return _b;
}
bool isp(int x)
{
for(int i=0;p[i]*p[i]<=x;i++)
{
if(x%p[i]==0)
{
return false;
}
}
return true;
}
void initp()
{
p.clear();
p.pb(2);
for(int i=3;i<100000;i++)
{
if(isp(i))
{
p.pb(i);
}
}
return ;
}
void get(int x)
{
MM(sx,0);
int temp = u[x];
for(int i=0;p[i]*p[i]<=temp;i++)
{
while(temp%p[i]==0)
{
sx[p[i]]++;
temp/=p[i];
}
}
if(temp>1)
{
assert(isp(temp));
sx[temp]++;
}
temp = d[x];
for(int i=0;p[i]*p[i]<=temp;i++)
{
while(temp%p[i]==0)
{
sx[p[i]]--;
temp/=p[i];
}
}
if(temp>1)
{
assert(isp(temp));
sx[temp]--;
}
return ;
}
int main()
{
initp();
int temp;
while(cin>>n)
{
v.clear();
t.clear();
for(int i=1;i<=n;i++)
{
cin>>temp;
v.pb(temp);
}
sort(v.begin(),v.end());
temp = v[0];
t.pb(temp);
for(int i=1;i<v.size();i++)
{
if(v[i]!=temp)
{
temp = v[i];
t.pb(temp);
}
}
n = t.size()-1;
for(int i=1;i<=n;i++)
{
u[i]=t[0]*t[i];
d[i]=t[i]-t[0];
d[i]*=2;
temp=gcd(u[i],d[i]);
u[i]/=temp;
d[i]/=temp;
}
for(int i=0;i<maxn;i++)
{
s[i]=-inf;
}
for(int i=1;i<=n;i++)
{
get(i);
for(int k=0;k<maxn;k++)
{
s[k]=max(s[k],sx[k]);
}
}
ans1 = ans2 = 1;
for(int i=1;i<maxn;i++)
{
if(s[i]>0)
{
for(int k=1;k<=s[i];k++)
{
ans1 = ans1 * i;
}
}
else if(s[i]<0)
{
s[i]=-s[i];
for(int k=1;k<=s[i];k++)
{
ans2 = ans2 * i;
}
}
}
cout<<ans1<<" "<<ans2<<endl;
}
return 0;
}
分享到:
相关推荐
pku部分题代码,不多,试一下怎么上传文件!
pku1000 pku1000程序 解题报告
pku经典题目解题报告 pku经典题目解题报告
PKU JudgeOnline FAQ 中文版 常见问题解答
pku1664源代码
benchmark (PKU-MMD) for continuous multi-modality 3D human action understanding and cover a wide range of complex human activities with well annotated information. PKU-MMD contains 1076 long video ...
ppt word PKU 课件 五星级灰常强大
8数码代码pku1077,300ms(哈希+广度搜索)
ACM代码 北大pku。 搞ACM的可以参考一下。代码还是挺规范的。有接近150道题目的代码。
PKU 2339 Rock, Scissors, Paper 源代码
pku acm 1469 COURSES 代码 二分图的最大匹配的匈牙利算法 解题报告请访问:http://blog.csdn.net/china8848
有一些代码是pku上的,希望大家看后给我留言,看看我的代码那里有问题??
北京大学pku2317 Questions and answers c++标程 文件名为2371.cpp
这是关于PKU上的题目分类 很详细 适合不同水平的童鞋们参考
分词训练用的pku训练集,主要是说明相似度计算的样例数据。
我写的解题报告,关于度限制生成树的 网址:http://acm.pku.edu.cn/JudgeOnline/problem?id=1639<br>题目:Picnic Planning 来源:East Central North America 2000
PKU的oj分类 可以通过分类进行练习~~~
pku acm 1042 贪心法
pku2482--Stars in Your Window的源程序