CF1166D——数学公式思维题
2024-09-06 07:41:35
#include<bits/stdc++.h>
using namespace std;
#define ll long long ll ans[],a,b,m; /* b=2^(n-2)a + 2^(n-3)r2 + 2^(n-4)r3 + ... + rn-1 + rn
可以推出这么个公式,然后枚举n(2-50)即可
从r2开始贪心求最大的r2,然后后面的ri都可以依次确定下来
*/
int solve(ll a,ll b,ll m,ll n){//长度为n是否可行
ans[]=a;
for(int i=;i<n-;i++){
a<<=;
if(a>b)return ;
}
b-=a;
ll p=(ll)<<(n-);
if(b<p || b>m*p || b/p>m)return ;
b-=p;
for(int i=;i<n;i++){
ll x=b>>(n-i-);
x=min(x,m-);
ans[i]=x+;
b-=x<<(n-i-);
}
if(b< || b>m-)return ; ans[n]=b+;
ll sum=ans[];
for(int i=;i<=n;i++)
ans[i]+=sum,sum+=ans[i];
cout<<n<<" ";
for(int i=;i<=n;i++)
cout<<ans[i]<<" ";
puts("");
return ;
} int main(){
int q;cin>>q;
while(q--){
memset(ans,,sizeof ans);
cin>>a>>b>>m;
if(a==b){
cout<<"1 "<<a<<endl;
continue;
}
int flag=;
for(int i=;i<=;i++){
if(solve(a,b,m,i)){
flag=;
break;
}
}
if(!flag)puts("-1");
}
}
最新文章
- Maven与Ant比较
- C#事务
- Python -- 数据加载、存储与文件格式
- 【转】SVN库的迁移
- VS2008中调试dll
- WordPress自定义文章页面模板
- java8新语法
- Hadoop之Hive UDAF TopN函数实现
- PHP中正则替换函数preg_replace用法笔记
- Oracle数据库作业-3 查询
- Parallel WebDriver executions using TestNG
- NodeJs之crypto
- Libevent源码分析 (1) hello-world
- React原理探索- @providesModule 模块系统
- Java编程语言下Selenium 对于下拉框,单选,多选等选择器的操作
- ie8兼容性总结
- java.util.regex包下的Pattern类和Matcher类的使用总结
- hdu-4856 Tunnels 状压DP
- Chrome 屏蔽广告
- 20165205 2017-2018-2 《Java程序设计》实验三 敏捷开发与XP实践