记录编号 |
296549 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[Poetize3] 大牛与神犇 |
最终得分 |
100 |
用户昵称 |
YGOI_真神名曰驴蛋蛋 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
4.742 s |
提交时间 |
2016-08-15 17:46:47 |
内存使用 |
72.07 MiB |
显示代码纯文本
#include <cstdio>
#include <cstring>
typedef long long TYPE;
struct Longer{
int num[3200];
int& operator [] (const int&i)
{return num[i];}
#define LOWBIT 100000000
friend bool operator > (Longer&a,Longer&b)
{
if(a.num[0]!=b.num[0])return a.num[0]>b.num[0];
for(int i=a[0];i>=1;--i)
if(a.num[i]!=b.num[i])
return a.num[i]>b.num[i];
return false;
}
void operator *=(const int&a)
{
TYPE temp=0;
for(int i=1;i<=num[0];++i){
temp+=((TYPE)num[i])*((TYPE)a);
num[i]=temp%LOWBIT;
temp/=LOWBIT;
}
while(temp!=0){
++num[0];
num[num[0]]=temp%LOWBIT;
temp/=LOWBIT;
}
}
void read(){
static char c[28010];
scanf("%s",c+1);
int lens=strlen(c+1);
num[0]=0;int k=0;
for(int j=lens;j>=1;--j){
if(((lens-j+1)&7)==1){
num[++num[0]]=0;
k=1;
}
num[num[0]]+=k*(c[j]-'0');
k=k*10;
}
}
void print(){
printf("%d",num[num[0]]);
for(int j=num[0]-1;j>=1;--j)
{
printf("%08d",num[j]);
}
}
}s[5853],n,a,b;
int mdzz[57774];
int p[5853];
char c[28010];
int main(){
freopen("heavencow.in","r",stdin);
freopen("heavencow.out","w",stdout);
int T=0;
for(int i=2;i<=57773;++i){
if(mdzz[i]==0){mdzz[i]=i;p[++T]=i;}
for(int j=1;j<=T&&p[j]<=mdzz[i]&&p[j]*i<=57773;++j)
mdzz[p[j]*i]=p[j];
}
s[1][0]=1;s[1][1]=p[1];
for(int i=2;i<=5852;++i){
s[i]=s[i-1];
s[i]*=p[i];
}
// for(int i=2;i<=100;++i)
// s[i].print(),putchar('\n');
scanf("%d",&T);
while(T-->0){
n.read();
// n.print();
// putchar('\n');
int i=1,j=5852;
while(i<=j){
int mid=(i+j)>>1;
if(s[mid]>n)j=mid-1;
else i=mid+1;
}
//while(s[i]>n)--i;
// printf(":::");
s[i-1].print();
putchar('\n');
}
return 0;
}