社区讨论
WA 40pts 求条
P4031[Code+#2] 可做题2参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mk88z9v6
- 此快照首次捕获于
- 2026/01/10 19:54 上个月
- 此快照最后确认于
- 2026/01/10 20:52 上个月
写了个很诡异的。
CPP#include<bits/stdc++.h>
using namespace std;
#define debug(i) cout<<"Cute_MKS "<<i<<' '
#define pii pair<int,int>
#define mkp(a,b) make_pair(a,b)
#define int long long
int T,i,l,r,p,mod=114514,m;
struct MTX
{
int a[3][3];
MTX operator*(const MTX &x)
{
MTX c;
memset(c.a,0,sizeof(c.a));
for(int i=1;i<=2;i++) for(int j=1;j<=2;j++) for(int k=1;k<=2;k++) c.a[i][k]=(c.a[i][k]+a[i][j]*x.a[j][k])%mod;
return c;
}
}bs;
MTX mtxqp(MTX b,int p)
{
if(p==1) return b;
MTX g=mtxqp(b,p>>1);
if(p&1) return g*g*b;
else return g*g;
}
void exgcd(int a,int b,int &x,int &y,int &d)
{
if(b==0){x=1;y=0;d=a;return;}
exgcd(b,a%b,y,x,d);
y-=a/b*x;
}
inline void sol()
{
cin>>i>>l>>r>>p>>mod>>m;
int f1,f2;
if(p==1) f1=1,f2=0;
else if(p==2) f1=0,f2=1;
else
{
MTX fib=mtxqp(bs,p-2);
f1=fib.a[1][1],f2=fib.a[1][2];
swap(f1,f2);
}
i%=mod;m=((m-i*f1)%mod+mod)%mod;
int x,y,d;exgcd(f2,mod,x,y,d);
if(m%d){cout<<"0\n";return;}
x=(x*(m/d)%(mod/d)+(mod/d))%(mod/d);
//debug(x)<<'\n';
int t1=(r-x)/mod,t2=(l-1-x)/mod;
if(r>=x) t1++;
if(l-1>=x) t2++;
cout<<t1-t2<<'\n';
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
bs.a[1][1]=bs.a[1][2]=bs.a[2][1]=1;
bs.a[2][2]=0;
cin>>T;
while(T--) sol();
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...