結果

問題 No.1198 お菓子配り-1
ユーザー mugen_1337
提出日時 2020-08-28 21:56:20
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 4 ms / 2,000 ms
コード長 3,932 bytes
コンパイル時間 5,296 ms
コンパイル使用メモリ 201,896 KB
最終ジャッジ日時 2025-01-13 17:22:17
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 14
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#include<bits/stdc++.h>
using namespace std;
#define ALL(x) x.begin(),x.end()
#define rep(i,n) for(int i=0;i<(n);i++)
#define debug(v) cout<<#v<<":";for(auto x:v){cout<<x<<' ';}cout<<endl;
#define mod 1000000007
using ll=long long;
const int INF=1000000000;
const ll LINF=1001002003004005006ll;
int dx[]={1,0,-1,0},dy[]={0,1,0,-1};
// ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
template<class T>bool chmax(T &a,const T &b){if(a<b){a=b;return true;}return false;}
template<class T>bool chmin(T &a,const T &b){if(b<a){a=b;return true;}return false;}
struct IOSetup{
IOSetup(){
cin.tie(0);
ios::sync_with_stdio(0);
cout<<fixed<<setprecision(12);
}
} iosetup;
template<typename T1,typename T2>
ostream &operator<<(ostream &os,const pair<T1,T2>&p){
os<<p.first<<" "<<p.second;
return os;
}
template<typename T>
ostream &operator<<(ostream &os,const vector<T>&v){
for(int i=0;i<(int)v.size();i++) os<<v[i]<<(i+1==(int)v.size()?"":" ");
return os;
}
template<typename T1,typename T2>
istream &operator>>(istream &is,pair<T1,T2>&p){
is>>p.first>>p.second;
return is;
}
template<typename T>
istream &operator>>(istream &is,vector<T>&v){
for(T &x:v)is>>x;
return is;
}
// 2^127 = 170141183460469231731687303715884105728 ~ 10^38
using int128=__int128;
ostream &operator<<(ostream &os,const __int128 n){
if(n==0){
os<<0;
return os;
}
__int128 num=n;
bool neg=false;
if(num<0)neg=true,num=-num;
string res="";
while(num>0){
res.push_back('0'+num%10);
num/=10;
}
if(neg) res.push_back('-');
reverse(begin(res),end(res));
os<<res;
return os;
}
istream &operator>>(istream &is,__int128 &n){
string s;
is>>s;
int idx=0;
bool neg=false;
if(s[0]=='-')neg=true,idx++;
n=0;
for(;idx<(int)s.size();idx++){
n=10*n+s[idx]-'0';
}
if(neg) n=-n;
return is;
}
__int128 abs128(__int128 x){
return x<0?-x:x;
}
__int128 gcd128(__int128 a,__int128 b){
if(a==0) return b;
if(b==0) return a;
return b>0?gcd128(b,a%b):a;
}
/*
pollard rho
()
*/
namespace fastprime{
int128 pow_mod(int128 a,int128 n,int128 m){
int128 ret=1;
while(n){
if(n&1)ret=ret*a%m;
a=a*a%m;
n>>=1;
}
return ret;
}
bool miller_rabin(int128 n){
if(n<=1) return false;
if(n==2) return true;
if(n%2==0) return false;
int128 d=n-1,s=0;
while(!(d&1))d>>=1,s++;// n-1=2^s*d
for(int128 a:{2,3,5,7,11,13,17,19,23,29,31,37}){
if(n<=a) break;
int128 y=pow_mod(a,d,n);// y=a^d (mod n)
int128 t;
for(t=d;t<n-1 and y!=1 and y!=n-1;t<<=1) y=y*y%n;
if(y!=n-1 and t%2==0) return false;
}
return true;
}
int128 pollard_rho_single(int128 n){
auto f=[&](int128 x){return (x*x+1)%n;};
if(miller_rabin(n)) return n;
if(!(n&1)) return 2;
int128 a=0;
while(true){
a++;
int128 x=a;
int128 y=f(x);
while(true){
int128 g=gcd128(y-x+n,n);
if(g==0 or g==n) break;
if(g!=1) return g;
x=f(x);
y=f(f(y));
}
}
}
vector<int128> pollard_rho(int128 n){
if(n==1) return {};
int128 x=pollard_rho_single(n);
if(x==n) return {x};
vector<int128> l=pollard_rho(x);
vector<int128> r=pollard_rho(n/x);
l.insert(l.end(),r.begin(),r.end());
return l;
}
}
signed main(){
int128 n;cin>>n;
if(n==1 or n==4){
cout<<-1<<endl;
return 0;
}
ll cnt=0;
while(n%2==0)n/=2,cnt++;
cout<<(cnt==1?-1:1)<<endl;
return 0;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0