萬聖節的入場券
阿新 • • 發佈:2018-10-04
!= 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; }
萬聖節的入場券