1. 程式人生 > >萬聖節的入場券

萬聖節的入場券

!= ret algo 表示 proc process 親戚 rip getch

萬聖節的入場券

[萬聖節Party開始前……]

萬聖節到了,LazyJazz要辦一個大Party(Communist Party)!

於是LazyJazz邀請了同學朋友,遠近親戚共計 n 人,每人發了一張Party入場券。

可是到了萬聖節這一天,不知怎的來了 n+1 個人(果然是鬼節),而且每人手裏都拿了一張入場券,這讓LazyJazz十分頭疼。

好在當時發入場券時,每張券上都印了一個驗證碼。真的入場券的驗證碼由一個固定合數 x 乘上一個兩兩入場券互不相同的質數 pi 得到。

於是LazyJazz一一檢視了所有人的驗證碼,發現了一個另類(即不滿足除 x 的商為一個質數),於是保安把這個好學生

恐怖分子拖了出去。

LazyJazz覺得這是很有意思,決定把他看到的所有驗證碼告訴你,讓你猜猜哪個驗證碼是假的。

輸入格式

第一行,一個正整數 n (9<n),表示正常應到人數

第二行,包含 n+1 個用空格隔開的正整數 Ai,表示實際到場的 n+1 個人手裏的入場券上的驗證碼。

輸入數據保證只有一個“另類”驗證碼,且可以判斷出來

輸出格式

一個正整數,表示假的驗證碼。

樣例

input

10
12 76 92 116 87 44 8 20 68 28 52

output

87

國慶Day3的T1
一如既往地沙雕,被卡了int
最重要的是這次還要記成績
慌得一批
首先是一個素數篩(打表會被卡)
然後我們可以知道,枚舉那個合數,但是全都判的話是O(nx)的,是會T的
所以我們來推一個規律,因為只有一個是不符合的,所以選三個數的話,就可以保證至少有兩個合法的,所以我們就可以用O(3x)的時間得到x
然後就可以寫一個O(n)來判斷
下面給出代碼:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include
<cmath> using namespace std; inline long long rd(){ long long x=0,f=1; char ch=getchar(); for(;!isdigit(ch);ch=getchar()) if(ch==-) f=-1; for(;isdigit(ch);ch=getchar()) x=x*10+ch-0; return x*f; } inline void write(long long x){ if(x<0) putchar(-),x=-x; if(x>9) write(x/10); putchar(x%10+0); return ; } int book[15000006]; int pr[1500006]; int total=0; inline void pre(long long x){ for(int i=2;i<=x;i++){ if(book[i]==0){ book[i]=i; pr[++total]=i; } for(int j=1;j<=total;j++){ if(pr[j]>book[i]||pr[j]*i>x) break; book[i*pr[j]]=pr[j]; } } memset(book,1,sizeof(book)); for(int i=1;i<=total;i++) book[pr[i]]=0; return ; } int n; long long a[100006]; int main(){ pre(1500000); scanf("%d",&n); for(int i=1;i<=n+1;i++) a[i]=rd(); int set=0; for(int i=4;i<=100000;i++){ if(book[i]==0) continue; int cnt=0; if(a[1]/i<1500000&&a[1]%i==0&&book[a[1]/i]==0) cnt++; if(a[2]/i<1500000&&a[2]%i==0&&book[a[2]/i]==0) cnt++; if(a[3]/i<1500000&&a[3]%i==0&&book[a[3]/i]==0) cnt++; if(cnt>=2){ set=i; break; } } for(int i=1;i<=n+1;i++){ if(a[i]%set!=0){ printf("%lld",a[i]); return 0; } if(book[a[i]/set]){ printf("%lld",a[i]); return 0; } } return 0; }

 

萬聖節的入場券