結果
問題 | No.186 中華風 (Easy) |
ユーザー |
![]() |
提出日時 | 2016-04-28 00:32:59 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,973 bytes |
コンパイル時間 | 1,697 ms |
コンパイル使用メモリ | 170,792 KB |
実行使用メモリ | 12,376 KB |
最終ジャッジ日時 | 2024-10-04 16:03:48 |
合計ジャッジ時間 | 3,182 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 6 WA * 17 |
ソースコード
#include<bits/stdc++.h>using namespace std;#define int long longtypedef pair<int,int>pint;typedef vector<int>vint;typedef vector<pint>vpint;#define pb push_back#define mp make_pair#define fi first#define se second#define all(v) (v).begin(),(v).end()#define rep(i,n) for(int i=0;i<(n);i++)#define reps(i,f,n) for(int i=(f);i<(n);i++)#define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();it++)template<class T,class U>inline void chmin(T &t,U f){if(t>f)t=f;}template<class T,class U>inline void chmax(T &t,U f){if(t<f)t=f;}int gcd(int a,int b){return b?gcd(b,a%b):a;}//a*x-m*k=1int extgcd(int a,int b,int &x,int &y){if(b==0){x=1;y=0;return a;}int g=extgcd(b,a%b,y,x);y-=a/b*x;return a;return g;}int X[3],Y[3];vint get_prime(){vint f(1000000,1);vint prime;f[0]=f[1]=0;for(int i=2;i<1000000;i++){if(!f[i])continue;prime.pb(i);for(int j=i+i;j<1000000;j+=i)f[j]=0;}return prime;}signed main(){rep(i,3)cin>>X[i]>>Y[i];map<int,int>M;vint prime=get_prime();for(int p:prime){vint table(25,-1);rep(i,3){int t=1,c=0;while(Y[i]%t==0){if(table[c]==-1)table[c]=X[i]%t;else if(table[c]!=X[i]%t){cout<<-1<<endl;return 0;}t*=p;c++;}}int t=1,c=0;while(table[c]!=-1){t*=p;c++;}M[t/p]=table[c-1];}int ans=0;int m=1;each(i,M)m*=i->fi;each(i,M){int a=1;each(j,M){if(i->fi!=j->fi)a*=j->fi;}int inv,tmp;extgcd(a,i->fi,inv,tmp);inv=(inv+i->fi*i->fi)%i->fi;rep(j,i->se)ans=(ans+a*inv)%m;}cout<<m<<endl;cout<<ans%m<<endl;return 0;}