中兴笔试题
来源:互联网 发布:用电脑接接网络监控 编辑:程序博客网 时间:2024/05/24 06:20
输入一个整数(正负都可能) 返回一个最小整数 如706 返回607
#include<iostream>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
bool comp(int a,int b)
{
return a>b;
}
int main()
{
long num;
cin>>num;
//存到vector里面
vector<int> v1;
if(num>0)
{
while(num>0)
{
v1.push_back(num%10);
num=num/10;
}
sort(v1.begin(),v1.end());
int cnt=0;
for(int i=0;i<v1.size();i++)
{
if(v1[i]==0)
{
cnt++;
}
}
if(cnt>0)
{
v1.erase(v1.begin(),v1.begin()+cnt); //?看下erase
//c.erase(beg,end) 删除[beg,end)区间的数据
}
//0插入到最小位的后面
v1.insert(v1.begin()+1,cnt,0);//看下insert 在指定位置loc前插入num个值为val的元素
//vector中的数组合起
for (int i = 0; i < v1.size() - 1; i++)
{
int j = v1.size() - 1 - i;
while (j > 0)
{
v1[i] *= 10;//恢复数字本来的大小,如706中的7变成700
j--;
}
}
int res = 0;
for (int i = 0; i < v1.size(); i++)
{
res += v1[i];
}
cout << res;
}//num>0;
else//num<0 输入的是负数
{
num=num*(-1);
while(num>0)
{
v1.push_back(num%10);
num=num/10;
}
sort(v1.begin(),v1.end(),comp);//从大到小排列
//容器中的数弹出来后,再加个负号就是最小数
//将容器vector里面的数字读出来组合成数字
for (int i = 0; i < v1.size() - 1; i++)
{
int j = v1.size() - 1 - i;
while (j > 0)
{
v1[i] *= 10;
j--;
}
}
int res = 0;
for (int i = 0; i < v1.size(); i++)
{
res += v1[i];
}
cout << res*(-1);
}
return 0;
}
- 中兴笔试题 (一)
- 中兴笔试题 (二)
- 中兴08笔试题
- 中兴通讯笔试题
- 中兴软件笔试题
- 中兴笔试题-1
- 中兴笔试题-2
- 中兴笔试题-3
- 中兴笔试题
- 一道中兴笔试题
- 中兴笔试题
- 中兴通讯笔试题
- 中兴笔试题
- 中兴笔试题
- 中兴笔试程序题
- 中兴通讯笔试题
- 中兴历年笔试题
- 中兴笔试题
- 什么叫一次会话
- c#二次开发明华URF-R330读写器读写问题解决方案
- VLAN
- POJ1003 Hangover
- C#编程学习之ListView控件属性详解以及如何向列表插入数据
- 中兴笔试题
- PCA 与 Robust PCA区别
- Android 手机通讯录开发时给联系人添加头像失败的坑
- MySQL索引的创建、删除 index creat/delete
- IOS获取相册照片的大小
- Java关键字
- java概述与开发环境
- 回归爬虫,拥抱scrapy&splash。抓facebook public post like、comment、share
- 1006. 换个格式输出整数