https://codeforces.com/contest/1311/problem/D

本题题意:给出a,b,c三个数,a<=b<=c;

可以对三个数中任意一个进行+1或-1的操作;

问题:求出最少操作数使这些数满足:b整除a,c整除b

思路:题目中给出abc的范围只有1e4

所以我们可以通过枚举的方式来找出答案;

我们通过枚举b的大小,然后计算在b为k值得情况下,a,c为哪个数最优

暴力枚举出最优情况即可;

细节:在枚举b为k时,对于a,我们可以通过预处理出b的因子,然后枚举因子与原本的数的差值,找出最优即可;

而对于c,有以下情况:

1.对于b>c的情况,我们只需要让c等于b

2.对于c>b的情况,我们有两种可能,1.c已经整除b,这种需要的操作数为0

                 2.c没整除b,所以可能让c减少到为b的倍数,或者增大到b的倍数,两者枚举找操作数小的即可;

所以这道题的做法就是:先预处理出范围内的因子,然后枚举;

代码如下:

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define me(a,x) memset(a,x,sizeof a)
#define rep(i,x,n) for(int i=x;i<n;i++)
#define repd(i,x,n) for(int i=x;i<=n;i++)
#define all(x) (x).begin(), (x).end()
#define pb(a) push_back(a)
#define paii pair<int,int>
#define pali pair<ll,int>
#define pail pair<int,ll>
#define pall pair<ll,ll>
#define fi first
#define se second
vector<int>g[];
int a,b,c;
void inist()
{
for(int i=;i<=;i++){
for(int j=;j<=/i;j++)
g[i*j].pb(i);
} }
int work(int& aa,int bb,int& cc)
{
int ans=;
int minn=;
int l=g[bb].size();
int x=aa;
for(int i=;i<l;i++){
if(minn>abs(g[bb][i]-aa)){
minn=abs(g[bb][i]-aa);
x=g[bb][i];
}
}
aa=x;
ans+=minn;
if(bb>cc){
ans+=abs(bb-cc);
cc=bb;
}
if(cc%bb<bb-cc%bb){
ans+=cc%bb;
cc-=cc%bb;
}
else{
ans+=bb-cc%bb;
cc+=bb-cc%bb;
}
return ans;
}
int main()
{
inist();
int t;
cin>>t;
while(t--){
int ans=;
int ansa,ansb,ansc;
cin>>a>>b>>c;
for(int i=;i<=;i++){
int a1=a,b1=i,c1=c;
int temp=abs(i-b);
temp+=work(a1,b1,c1);
if(temp<ans){
ans=temp;
ansa=a1;ansb=b1;ansc=c1;
}
}
cout<<ans<<endl;
cout<<ansa<<" "<<ansb<<" "<<ansc<<endl;
}
return ;
}

最新文章

  1. 大数据之Yarn——Capacity调度器概念以及配置
  2. 解决 npm install xxx 卡住 的问题
  3. C++中随机数和不重复的随机数
  4. MAC中查看Python安装路径
  5. struts2多线程数据乱窜问题
  6. 分享一个圆角自定义的漂亮AlertDialog
  7. 20140708郑州培训第二题Impossible Game
  8. Application之图书馆
  9. 手游开发者大会交流OGEngine新版本发布
  10. java javaScript实现遮罩层 动态加载
  11. Array对象方法属性总结
  12. data-packed volume container - 每天5分钟玩转 Docker 容器技术(43)
  13. 你可能忽略的js类型转换
  14. Kaggle教程——大神教你上分
  15. 如何运行后台Service?
  16. Java Native Interface(JNI)
  17. Vagrant将下载好的镜像装载到本地中
  18. FAT文件系统规范v1.03学习笔记---2.FAT区之FAT数据结构(Fat Data Structure)
  19. Python3 字符串前面加u,r,b的含义
  20. learning ddr mode register MR0

热门文章

  1. Gong服务实现平滑重启分析
  2. js—数字那些事儿
  3. http报文解析
  4. android sdk manager 无法更新,解决连不上dl.google.com的问题
  5. Windows server 2012 出现大量无名已断开连接用户清楚办法
  6. 如何获取 iOS APP 的 scheme URL ?
  7. w13scan扫描器的使用
  8. C#实现图片文件到数据流,再到图片文件的转换
  9. Windows通过DOS命令行设置IP地址
  10. day 15 内置函数