結果
問題 | No.774 tatyamと素数大富豪 |
ユーザー |
|
提出日時 | 2020-04-22 16:11:05 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 64 ms / 2,000 ms |
コード長 | 1,544 bytes |
コンパイル時間 | 1,084 ms |
コンパイル使用メモリ | 82,744 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-11 19:22:46 |
合計ジャッジ時間 | 2,103 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 14 |
コンパイルメッセージ
main.cpp:54:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type] 54 | main() | ^~~~
ソースコード
#include<iostream>#include<vector>#include<algorithm>using namespace std;long to_i(string s){long ret=0;for(char c:s)ret=ret*10+c-'0';return ret;}long mul(long a,long b,long c){const long B=1e9;long aa=a/B,ab=a%B;long ba=b/B,bb=b%B;long up=aa*ba%c;for(int i=0;i<18;i++)up=up*10%c;long mid=(aa*bb+ab*ba)%c;for(int i=0;i<9;i++)mid=mid*10%c;long low=ab*bb%c;return(up+mid+low)%c;}long power(long a,long b,long c){if(b==0)return 1L;else if(b%2==0)return power(mul(a,a,c),b/2,c);else return mul(a,power(a,b-1,c),c);}bool isp(long N){if(N%7==0||N%11==0||N%13==0||N%17==0||N%19==0)return false;long s=0,d=N-1;while(d%2==0){s++;d/=2;}for(long a=2;a<=84&&a<N;a++){long ad=power(a,d,N);bool flag=ad!=1;if(flag){for(int r=0;r<s;r++){flag=flag&&ad!=N-1;ad=mul(ad,ad,N);}}if(flag)return false;}return true;}main(){int N;cin>>N;int cs=0;vector<string>A(N);for(int i=0;i<N;i++){cin>>A[i];for(char c:A[i])cs+=c-'0';}sort(A.begin(),A.end());if(N==1){string s=A[0];if(s=="2"||s=="3"||s=="5"||s=="7"||s=="11"||s=="13"){cout<<s<<endl;}else{cout<<-1<<endl;}return 0;}if(cs%3==0){cout<<-1<<endl;return 0;}long ans=-1;prev_permutation(A.begin(),A.end());do{if(to_i(A.back())%2==0||to_i(A.back())%5==0)continue;string now="";for(string a:A)now+=a;long X=to_i(now);if(ans<X&&isp(X)){ans=X;}}while(prev_permutation(A.begin(),A.end()));cout<<ans<<endl;}