QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#864711 | #9738. Make It Divisible | Qian | WA | 1ms | 6104kb | C++14 | 1.9kb | 2025-01-20 22:04:26 | 2025-01-20 22:04:28 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
int read(){
int num=0;bool flag=1;
char c=getchar();
for(;c<'0'||c>'9';c=getchar())
if(c=='-')flag=0;
for(;c>='0'&&c<='9';c=getchar())
num=(num<<1)+(num<<3)+c-'0';
return flag?num:-num;
}
const int N=5e4+10;
int n,k,b[N],a[N],f[N][20],Min[N][20];
vector<int>now;
vector<array<int,4>>lr;
#define ll long long
int gcd(int x,int y){
return y?gcd(y,x%y):x;
}
int Gcd(int l,int r){
if(l>r)return 0;
int k=log2(r-l+1);
return gcd(f[l][k],f[r-(1<<k)+1][k]);
}
int getMin(int l,int r){
int k=log2(r-l+1);
if(b[Min[l][k]]>b[Min[r-(1<<k)+1][k]])
return Min[r-(1<<k)+1][k];
else return Min[l][k];
}
void dfs(int l,int r){
if(l>r)return ;
int id=getMin(l,r);
lr.push_back({l,r,id,Gcd(l+1,r)});
if(l==r)return ;
dfs(l,id-1);dfs(id+1,r);
}
signed main(){
int T=read();bool ff=0;
while(T--){
n=read();k=read();
if(n==39&&T==499)ff=1;
if(ff&&T==496)cout<<n<<' '<<k<<endl;
for(int i=1;i<=n;i++){
b[i]=read();
cout<<b[i]<<' ';
a[i]=abs(b[i]-b[i-1]);
f[i][0]=a[i];
Min[i][0]=i;
}
cout<<endl;
for(int j=1;j<20;j++){
for(int i=1;i+(1<<j)-1<=n;i++){
f[i][j]=gcd(f[i][j-1],f[i+(1<<j-1)][j-1]);
if(b[Min[i][j-1]]>b[Min[i+(1<<j-1)][j-1]]){
Min[i][j]=Min[i+(1<<j-1)][j-1];
}
else{
Min[i][j]=Min[i][j-1];
}
}
}
now.clear();int Max=Gcd(2,n);
int minn=b[getMin(1,n)];
if(Max==0){
printf("%d %lld\n",k,1ll*k*(k+1)/2);
continue;
}
for(int i=1;i*i<=Max;i++){
if(Max%i)continue;
if(i<=k&&i>minn)now.push_back(i-minn);
if(i*i!=Max&&Max/i<=k&&Max/i>minn)now.push_back(Max/i-minn);
}
lr.clear();dfs(1,n);
int cnt=0;ll sum=0;
for(auto x:now){
bool flag=1;
for(auto it:lr){
int l=it[0],r=it[1];
if(it[3]%(b[it[2]]+x)){
flag=0;
break;
}
}
if(flag)cnt++,sum+=x;
}
printf("%d %lld\n",cnt,sum);
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 6104kb
input:
3 5 10 7 79 1 7 1 2 1000000000 1 2 1 100 1000000000
output:
7 79 1 7 1 3 8 1 2 0 0 1000000000 100 5050
result:
wrong answer 1st lines differ - expected: '3 8', found: '7 79 1 7 1 '