题目描述:

给定三个整数X,Y,Z,要求进行若干次操作使得X,Y,Z相等,操作有两种:

1.从X,Y,Z中选择两个数都加1。

2.从X,Y,Z中选择一个数加2。

求最少需要多少次操作。

题目思路:

1.对X,Y,Z三个数进行排序,此处用的是降序排序。假设排序完之后X>Y>Z,如果Y-Z是奇数的话,那么对Z进行(Y - Z)/2次操作2的话,Z就会变成了Y-1了,即此时的Y=Y,Z=Y-1。那么此时只需先对Y,Z进行X-Y次操作1,使得X=X,Y=X,Z=X-1。然后再对X,Y进行1次操作1,最后再对Z进行一次操作2.最后X=Y=Z。这种情况下,共需要X - Y +(Y - Z)/2 + 2次操作。

2.如果Y-Z是偶数的话,那么对Z进行(Y - Z)/2次操作2的话,Z就变成了Y了,即此时Y = Y,Z = Y。那么此时只需对Y,Z进行X - Y次操作1即可。这种情况下,共需要X - Y +(Y - Z)/2次操作。

代码如下:

#include<iostream>
#include<cassert>
#include<vector>
#include<stack>
#include<cstdio>
#include<unordered_map>
#include<queue>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std; class Solution {
public:
int minCount(int a[])
{
int x = a[0],y = a[1],z = a[2];
if((y - z) & 1)
{
return x - y + (y - z) / 2 +2;
}
else
{
return x - y + (y - z) / 2;
}
} };
bool cmp(int a,int b)
{
return a > b;
}
int main()
{ int a[]={2,9,5};//测试用例
Solution s;
sort(a,a+3,cmp);
cout<<s.minCount(a)<<endl;; }

  

18年春招某编程题:有三个整数X,Y,Z,要求进行若干次操作使得X,Y,Z相等的更多相关文章

  1. C算法编程题(三)画表格

    前言 上一篇<C算法编程题(二)正螺旋> 写东西前还是喜欢吐槽点东西,要不然写的真还没意思,一直的想法是在博客园把自己上学和工作时候整理的东西写出来和大家分享,就像前面写的<T-Sq ...

  2. POJ C++程序设计 编程题#1 大整数的加减乘除

    编程题#4:大整数的加减乘除 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 ...

  3. 2019春招面试高频题(Java版),持续更新(答案来自互联网)

    第一模块--并发与多线程 Java多线程方法: 实现Runnable接口, 继承thread类, 使用线程池 操作系统层面的进程与线程(对JAVA多线程和高并发有了解吗?) 计算机资源=存储资源+计算 ...

  4. shell编程题(三)

    将一目录下所有的文件的扩展名改为bak #! /bin/bash for i in `ls` do mv $i ${i%%.*}.bak done ${i%%.*} 截掉一个变量字符串第一个" ...

  5. 腾讯2016校招编程题【PHP实现】

    2016腾讯春招的编程题 话不多说,直接上题!!! 给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串.如何删除才能使得回文串最长呢?输出需要删除的字符个数 . 这道题是以回文为载体, ...

  6. 阿里春招Android面经

    作者:淘萄桃 链接: https://www.jianshu.com/p/a07ccaad832d 本文由作者授权发布. 笔者参加18年阿里春招,有幸最终拿到阿里offer,base杭州,岗位客户端开 ...

  7. C算法编程题系列

    我的编程开始(C) C算法编程题(一)扑克牌发牌 C算法编程题(二)正螺旋 C算法编程题(三)画表格 C算法编程题(四)上三角 C算法编程题(五)“E”的变换 C算法编程题(六)串的处理 C算法编程题 ...

  8. C算法编程题(四)上三角

    前言 上一篇<C算法编程题(三)画表格> 上几篇说的都是根据要求输出一些字符.图案等,今天就再说一个“上三角”,有点类似于第二篇说的正螺旋,输出的字符少了,但是逻辑稍微复杂了点. 程序描述 ...

  9. POJ C++程序设计 编程题#3 编程作业—文件操作与模板

    编程题#3: 整数的输出格式 来源: POJ(Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 1000kB 描述 利 ...

随机推荐

  1. Linux /etc/password 文件详解

    root2:x:0:0::/home/root2:/bin/bash[用户名]:[密码]:[UID]:[GID]:[身份描述]:[主目录]:[登录shell] 其中: ⒈[用户名]是passwd文件里 ...

  2. Blender 画正四面体

    正四面体打开“添加网格”菜单(Shift + A),然后选择“锥形”.将“顶点数”设置为3,将“半径1”保留为默认值1.000,将“半径2”设置为0.000.现在,将深度设置为 {根号2,约等于1.4 ...

  3. wireshark显示过滤器的几种用法(转自他人博客)

    本文章转自:http://blog.51cto.com/houm01/1872652 几种条件操作符 ==   eq    等于    ip.addr == 192.168.0.1   ip.addr ...

  4. ACM-ICPC 2018 徐州赛区网络预赛(9.9)

    #include<bits/stdc++.h> #define int long long using namespace std; ; ; ]; int quick(int a,int ...

  5. Linux交叉工具链安装

    这篇博文http://blog.csdn.net/u010957054/article/details/58056863 提到了一个好的百度网盘,里面有各个版本的交叉工具链. http://www.3 ...

  6. Js 分别取一个数的百位,十位,个位

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  7. oracle实用命令入门

    登录oracle(需要在oracle用户下) 执行sqlplus,然后输入用户名和密码就可以了,如果是第一次使用oracle的话,可以直接使用sqlplus / as sysdba免密码以管理员的身份 ...

  8. Android资源收集

    1 android studio最新版本下载地址:https://developer.android.google.cn/studio/preview/?utm_source=android-stud ...

  9. powerdesigner16.5 破解

    powerdesigner16.5 破解 方法: 破解方法 1.将下载下来的PowerDesigner165_破解文件.rar进行解压,之后找到pdflm16.dll破解文件,并将pdflm16.dl ...

  10. jumpserver修改默认管理员账号名

    1.安装完毕jumpserver之后,默认管理员账号为admin 显然类似windows的administrator以及linux的root 把账号名改成别的 个人信息界面点击设置 修改为自己想要的用 ...