signed main()
{
int t;cin>>t;
while(t--)
{
ll a,b,m;cin>>a>>b>>m;
if(a>=b)
{
if(a>b) cout<<"-1"<<endl;
if(a==b) cout<<"1 "<<a<<endl;
continue;
}
int n;
for(n=1;n<=50;++n)
{
ll l = (1ll << (n - 1)) * (a + 1), r = (1ll << (n - 1)) * (a + m);
if(b>=l&&b<=r) break;
if(l>b)
{ n=51;break; }
}
if(n>=50)
{
cout<<"-1"<<endl;
continue;
}
cout<<n+1<<" "<<a<<" ";
ll sum=a,tot=0;
for(int i=1;i<n;++i)
{
ll r = min((b - (1ll << (n - 1)) - (1ll << (n - 1)) * a - tot) / (1ll << (n - i - 1)), m - 1);//记得/...,因为b中的式子用是ri*(..)
cout<<sum + r +1 <<" ";
tot+=r*(1ll<<(n-1-i));
sum+= (sum + r+1);//前缀和加上现在的ai
}
cout<<b<<endl;
}
return 0;
}
Codeforces Round #561 (Div. 2) D - Cute Sequences (推公式)
猜你喜欢
转载自blog.csdn.net/weixin_44116061/article/details/104107240
今日推荐
周排行