bestcoder round 80
24761 ワード
2つの水問題を切ったが,hackが5つあったおかげで100余り増えた.
Lucky
Accepts: 819
Submissions: 2299
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
問題の説明
説明の入力
出力の説明
入力サンプル
出力サンプル
题目はたくさん言って、実は配列の中で0と1があるかどうかを判断するだけで、コードは略...
Segment
Accepts: 418
Submissions: 2020
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
問題の説明
説明の入力
出力の説明
入力サンプル
出力サンプル
図を描くと式は(q-1)(q-2)/2になりますが、qは10^18あり、直接二乗すると爆発するので、高速べき乗を使いますが、先算(q-1)(q-2)なのでしょうか.modが過ぎた数はこれ以上除くことができないでしょう.
だから解決策はまず偶数を探して2を除いて、それから高速べき乗の形式で乗算します(私はそれを高速と言います)
Lucky
Accepts: 819
Submissions: 2299
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
問題の説明
Vampire , .
S, S S ( ).
, , ”YES”, ”NO”.
説明の入力
T, .
n, .
n , .
1≤n≤105,1≤T≤10,0≤ai≤109.
出力の説明
”YES” ”NO”.
入力サンプル
1
1
2
出力サンプル
NO
题目はたくさん言って、実は配列の中で0と1があるかどうかを判断するだけで、コードは略...
Segment
Accepts: 418
Submissions: 2020
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
問題の説明
Rivendell , .
. x+y=q, , .
, P .
説明の入力
T, .
q,P, .
q q≤1018,1≤P≤1018,1≤T≤10.
出力の説明
, P .
入力サンプル
1
2 107
出力サンプル
0
図を描くと式は(q-1)(q-2)/2になりますが、qは10^18あり、直接二乗すると爆発するので、高速べき乗を使いますが、先算(q-1)(q-2)なのでしょうか.modが過ぎた数はこれ以上除くことができないでしょう.
だから解決策はまず偶数を探して2を除いて、それから高速べき乗の形式で乗算します(私はそれを高速と言います)
#include<cstdio>
#include<iostream>
using namespace std;
int t;
long long q,p,x,y,ans;
int main()
{
cin>>t;
while(t--)
{
cin>>q>>p;
x=q-1;
y=q-2;
if(x%2==0) x=x/2;else y=y/2;
ans=0;
while(x!=0)
{
if(x%2==1) ans=(ans+y)%p;
x=x>>1;
y=(y<<1)%p;
}
cout<<ans<<endl;
}
}