华为笔试——C++消重输出
题目:消重输出
题目介绍:
输入一个正整数,给出消除重复数字以后最大的整数,注意需要考虑长整数。
例:
输入: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++消重输出的更多相关文章
- Dark Side of Cloud Storage —— 数据对像的分块消重
数据对像(可以通俗地认为是文件)的分块存储具有久远的历史.长久以来,单机文件系统一直将文件切分为若干固定大小的小块.其主要目的是为了进行有效的空间管理.互联网时代,大规模数据存储逐步发展起来.出于降低 ...
- 华为笔试——C++括号匹配
题目:括号匹配 题目来源:https://blog.csdn.net/lizi_stdio/article/details/76618908 题目介绍:输入一个字符串,里面可能包含“()”.“ [ ...
- 27号华为笔试(三道ac两道)
三道题目case:100,100,0: 三个题目: 前两个都全部ac了,第三题没时间: 记录一下大概的思路: 第一题 主要通过Java中的字符串处理函数:然后控制字符串输入格式: 卡bug的点: 1: ...
- 华为笔试——C++平安果dp算法
题目:平安果 题目介绍:给出一个m*n的格子,每个格子里有一定数量的平安果,现在要求从左上角顶点(1,1)出发,每次走一格并拿走那一格的所有平安果,且只能向下或向右前进,最终到达右下角顶点(m,n), ...
- 华为笔试——C++字符串四则运算的实现
题目:字符串四则运算的实现 有字符串表示的一个四则运算表达式,要求计算出该表达式的正确数值.四则运算即:加减乘除"+-*/",另外该表达式中的数字只能是1位(数值范围0~9),运算 ...
- 华为笔试——C++最高分问题
题目介绍:现在输入一组数据,写入学生的考试分数.已知学生数为N,学生编号为1到N,且0<N<=30000,每个学生都有一个分数:操作数为M且0<M<5000.输入第一行为N M ...
- 华为笔试——C++的int型数字位排序
题目:int型数字位排序 题目介绍:输入int 型整数,按照从右至左的顺序,返回不含重复数字的新整数. 例: 输入: 99824270 输出: 072489 分析:乍一看很简单,但是很容易忽略int ...
- 华为笔试——C++特定位数比较
题目:特定位数比较 题目介绍:输入两行数据,第一行为 m 个正整数,以空格隔开:第二行为正整数 n ,且 n<= m:要求对第一行的数字的后三位大小进行排序,输出排行 n 的数字,其中,若不满三 ...
- 华为笔试——C++进制转换
题目:2-62进制转换 题目介绍:输入一个n1 进制的整数(包括负数),将其转换成n2 进制,其中n1 .n2 的范围是 [ 2,62 ] .每个数字的范围是0-9.a-z.A-Z.不用考虑非法输入. ...
随机推荐
- WebClient 下载图片(文件)
public static string SaveImage(string url, string newfilename) { WebClient mywebclient = new WebClie ...
- Java实现目的选层电梯的调度
一.前言 本次博客我将简单介绍一下前两次的电梯作业,并简单解析一下我的程序结构,进一步对我的第二次作业的算法核心和一些想法做一些分享,我的电梯设计算法并不是由调度器来决定电梯的捎带与否,而是由电梯自主 ...
- 《算法竞赛进阶指南》0x10 基本数据结构 Hash
Hash的基本知识 字符串hash算法将字符串看成p进制数字,再将结果mod q例如:abcabcdefg 将字母转换位数字(1231234567)=(1*p9+2*p8+3*p7+1*p6+2*p5 ...
- Mave实战(1)——Maven介绍
目录 1. Maven介绍 1.1. 何为Maven 1.1.1. Maven是优秀的构建工具 1.1.2. Maven不仅仅是构建工具 1. Maven介绍 1.1. 何为Maven Maven是一 ...
- C# Web Service简单使用
第一步 打开VS,新建一个项目 第二步 创建一个ASP.NET 空 Web应用程序 我这里用的是VS2017 第三步 添加一个Web 服务(ASMX) 右键解决方案-->添加-->新建项 ...
- Delphi调用爷爷类的方法
Delphi通过inherited 可以调用父类的方法,但是没有提供直接调用父类的父类的方法(爷爷类),通过变通的方式实现如下: 假设父类是TFather,爷爷类TGrand,调用爷爷类的Write方 ...
- C语言——第一章,1.4程序开发过程
1.4程序开发过程 一,开发过程 1,分析问题,设计一种解决问题的途径(方案)★ 2,写出源代码 (*.c) 3,编译→(连接) *.obj→(*.exe) 4,运行*.exe (可执行程序) 二 ...
- 配置redis一直启动
1. 进入 DOS窗口 2. 在进入redis的安装目录 3. 输入:redis-server --service-install redis.windows.conf --loglevel verb ...
- 20155227 2016-2017-2 《Java程序设计》第十周学习总结
20155227 2016-2017-2 <Java程序设计>第十周学习总结 教材学习内容总结 Java的网络编程 网络编程 就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所 ...
- 第三次预作业20155231邵煜楠:虚拟机上的Linux学习
java第三次预作业--虚拟机初体验(学习记录) 学习在笔记本上安装Linux操作系统 通过老师给予的官网链接,下载了VirtualBox-5.1.14-112924-win和Ubuntu-16.04 ...