题目:消重输出

题目介绍:

输入一个正整数,给出消除重复数字以后最大的整数,注意需要考虑长整数。

例:

输入:988274320

输出:9874320

题目分析:这个结果的实现需要两个步骤:消重和排序。第一步,消重。先用string 和char 将数字分别储存进char 数组,然后从左边第一个字符开始逐个向右边比较,如果有相同的字符就将左边的置换成 ‘a’ ,这样多次次循环过后988274320就变成了9a8a74320,因为是向右比较且只变换左边字符,因此a 不会重复。第二步,排序。就是循环比较,大的字符向右靠即可。

代码:

 #include <iostream>
#include <string>
#include <math.h>
#include <conio.h>
using namespace std;
int main()
{
int size;
cout << "请输入位数:" << endl;
cin >> size;
int i = ,j = ,n = ;
int count = ;
long result = ;
char c;
char *p = new char[size];
cout << "请输入" << size << "位正整数" << endl;
while ((c = _getch()) != '\r')
{
if (c >= ''&&c <= '')
{
p[count] = c;
cout << c;
count++;//字符形式存储在数组里
}
}
for (i = ; i < size; i++)
{
for (j = ; j < size; j++)
{
if (p[i] == p[j] && i < j)
{
p[i] = 'a';//重复的数字,左边的变成a
n++;//每有一个重复的,n++
}
}
}
cout << endl;
for (i = ; i < size;i++)
{
cout << p[i];
}
cout << endl;
for (i = ; i < size; i++)
{
for (j = ; j < size; j++)
{
if (p[i] < p[j] && i < j)
{
count = p[i];
p[i] = p[j];
p[j] = count;//数字大的排前面
}
}
}
cout << n << endl;
for (i = ; i < size; i++)
{
cout << p[i];
}
cout << endl;
for (i = ; i < size; i++)
{
if (i >= n)//输出除了a之外的数字
{
cout << p[i];
result += (int(p[i])-) * int(pow(, size - i - ));//转换成正整数
}
}
cout << endl << result << endl;
return ;
}

结果:

其中输入位数这一步可用string 与 char 的strcpy 省去。

华为笔试——C++消重输出的更多相关文章

  1. Dark Side of Cloud Storage —— 数据对像的分块消重

    数据对像(可以通俗地认为是文件)的分块存储具有久远的历史.长久以来,单机文件系统一直将文件切分为若干固定大小的小块.其主要目的是为了进行有效的空间管理.互联网时代,大规模数据存储逐步发展起来.出于降低 ...

  2. 华为笔试——C++括号匹配

    题目:括号匹配 题目来源:https://blog.csdn.net/lizi_stdio/article/details/76618908 题目介绍:输入一个字符串,里面可能包含“()”.“ [   ...

  3. 27号华为笔试(三道ac两道)

    三道题目case:100,100,0: 三个题目: 前两个都全部ac了,第三题没时间: 记录一下大概的思路: 第一题 主要通过Java中的字符串处理函数:然后控制字符串输入格式: 卡bug的点: 1: ...

  4. 华为笔试——C++平安果dp算法

    题目:平安果 题目介绍:给出一个m*n的格子,每个格子里有一定数量的平安果,现在要求从左上角顶点(1,1)出发,每次走一格并拿走那一格的所有平安果,且只能向下或向右前进,最终到达右下角顶点(m,n), ...

  5. 华为笔试——C++字符串四则运算的实现

    题目:字符串四则运算的实现 有字符串表示的一个四则运算表达式,要求计算出该表达式的正确数值.四则运算即:加减乘除"+-*/",另外该表达式中的数字只能是1位(数值范围0~9),运算 ...

  6. 华为笔试——C++最高分问题

    题目介绍:现在输入一组数据,写入学生的考试分数.已知学生数为N,学生编号为1到N,且0<N<=30000,每个学生都有一个分数:操作数为M且0<M<5000.输入第一行为N M ...

  7. 华为笔试——C++的int型数字位排序

    题目:int型数字位排序 题目介绍:输入int 型整数,按照从右至左的顺序,返回不含重复数字的新整数. 例: 输入: 99824270 输出: 072489 分析:乍一看很简单,但是很容易忽略int ...

  8. 华为笔试——C++特定位数比较

    题目:特定位数比较 题目介绍:输入两行数据,第一行为 m 个正整数,以空格隔开:第二行为正整数 n ,且 n<= m:要求对第一行的数字的后三位大小进行排序,输出排行 n 的数字,其中,若不满三 ...

  9. 华为笔试——C++进制转换

    题目:2-62进制转换 题目介绍:输入一个n1 进制的整数(包括负数),将其转换成n2 进制,其中n1 .n2 的范围是 [ 2,62 ] .每个数字的范围是0-9.a-z.A-Z.不用考虑非法输入. ...

随机推荐

  1. linux--yum源,源码包

    一.企业版 搜狐:http://mirrors.sohu.com/ 网易:http://mirrors.163.com/ 阿里云:http://mirrors.aliyun.com/ 腾讯:http: ...

  2. MySQL初体验--安装MySQL

    操作系统版本:redhat 6.7 64位 [root@mysql ~]# cat /etc/redhat-release Red Hat Enterprise Linux Server releas ...

  3. Oracle 存储结构一

    了解块中表行数据的存储 Oracle数据存储模型 逻辑结构在左,物理结构在右 有一个关系使用虚线绘制,表示段与数据文件的多对多关系.之所以使用虚线表示关系,是因为这种多对多关系不应存在. 表空间实体消 ...

  4. 洛谷P4602 [CTSC2018]混合果汁(主席树)

    题目描述 小 R 热衷于做黑暗料理,尤其是混合果汁. 商店里有 nn 种果汁,编号为 0,1,\cdots,n-10,1,⋯,n−1 . ii 号果汁的美味度是 d_idi​ ,每升价格为 p_ipi ...

  5. MySQL无法启动重启竟是因为改了Linux主机名

    MySQL无法重启.无法关闭.无法启动.无法使用,如果是因为修改了主机名,可以这样解决:关闭掉所有mysql进程,然后在启动一些mysql! 有时候,只要执行如下MySQL初始化命令即可解决:/usr ...

  6. MySQL----MySQL数据库入门----第二章 数据库和表的基本操作

    2.1 数据库和数据库表的创建 ①数据库的创建(在数据库系统中划分一块存储数据的空间): create database 数据库名称 [charset 字符集]: ②数据库表的创建 use 数据库名 ...

  7. Js错误: obj.parents is not a function

    代码:      (1)  <div class="ViewMore" id="viewmore${i}" onclick="CLICK(thi ...

  8. Ubuntu16.04安装CDH5.14.2

    一.安装cloudera manager(下文简称cm) (一).环境及软件准备: 1.环境:Ubuntu16.04 desktop x 3 台 ip分别为:10.132.226.121,10.132 ...

  9. Ubuntu18.04 设置wifi热点

    (1)在终端输入 命令:nm-connection-editor (2)然后点击wifi网络进行配置即可:

  10. MQTT入门2 -- “Error: Invalid password hash for user nick.”和“Connection Refused: not authorised.”

    原文地址:https://www.cnblogs.com/NickQ/p/9277315.html 问题描述: 搭建好mosqitto环境后,利用无密码验证方式,成功通过测试. 但修改配置文件将匿名访 ...