整数v,从高位到低位,取c位数,得到最大数 (其中:v>=10^c)
题目如上,例子v=22312324,c=3,求得最大数为334。
用自己的想法实现了一遍,如果你有更好的方法的话,欢迎不吝赐教。
我的思路是,先将整数v按位存入一个数组,数组低位为整数高位,如num[]={2,2,3,1,2,3,2,4}。求得最大数有c位数,v_max[]={……}。
每次从数组num[]取得一位最大数,存入v_max[]相应位。如求v_max[0],因为v_max有c位,所以可取num[0]~num[len-c-0]中的最大数(len为v的位数),记录最大数下标为num_i,再求v_max[1],可取num[num_i+1]~num[len-c-1]中取最大数,……如此取c个数就得到v_max[]。
#include<iostream>
using namespace std; void fun(const int num[],int len,int v_max[],int c,int max_i,int num_i)
{
if(max_i==c) return;
int j=num_i;
int temp=-;
for( ;j<=len-c+max_i;j++){
if(temp<num[j]){
temp=num[j];
num_i=j;
}
}
v_max[max_i]=temp;
fun(num,len,v_max,c,++max_i,++num_i);
}
int main()
{
int v,c,num[],v_max[],len; //len为整数v的位数,v_max[]保存最大数
v=;
int v1=v;
len=; while(v1>){ /*将整数v按位存入数组num[]*/
num[len++]=v1%;
v1/=;
}
for(int i=;i<len/;i++)
swap(num[i],num[len--i]); cout<<"v="<<v<<endl;
while(cin>>c){
if(c>len){
cout<<"error:v<10^c"<<endl;
}
else{ fun(num,len,v_max,c,,);
for(int i=;i<c;i++)
cout<<v_max[i];
cout<<endl;
}
} }
整数v,从高位到低位,取c位数,得到最大数 (其中:v>=10^c)的更多相关文章
- delphi 关于 "高位" 与 "低位"
		
Longint = Integer WPARAM = Integer LPARAM = Integer LRESULT = Integer FARPROC = Pointer function Mak ...
 - Oracle中关于处理小数点位数的几个函数,取小数位数,Oracle查询函数
		
Oracle中关于处理小数点位数的几个函数,取小数位数,Oracle查询函数 关于处理小数点位数的几个oracle函数()1. 取四舍五入的几位小数select round(1.2345, 3) fr ...
 - SQLserver中取众位数的写法
		
取众位数:先按个数倒排序,再取第一条SELECT * FROM ( select a.billid,a.DemandVoltage,count(1) as RecordCount, Row_NUMBE ...
 - php 除10取整,取十位数前面一个数字,百位前两个数字
		
需求:php 除10取整,取十位数前面一个数字,百位前两个数字,并把大于2的加红显示 例:0-9,10-19,20-29,30-39,110-119对应为:0 1 2 3 11 实现主要方法:$num ...
 - 预处理、const、static与sizeof-用宏定义得到一个字的高位和低位字节
		
1:代码如下: #define WORD_LO(XXX) ((byte) (word)(XXX) & 255) #define WORD_HI(XXX) ((byte) (word)(XXX) ...
 - 转,Oracle中关于处理小数点位数的几个函数,取小数位数,Oracle查询函数
		
关于处理小数点位数的几个oracle函数() 1. 取四舍五入的几位小数 select round(1.2345, 3) from dual; 结果:1.235 2. 保留两位小数,只舍 select ...
 - [转载]转,Oracle中关于处理小数点位数的几个函数,取小数位数,Oracle查询函数
		
关于处理小数点位数的几个oracle函数() 1. 取四舍五入的几位小数 select round(1.2345, 3) from dual; 结果:1.235 2. 保留两位小数,只舍 select ...
 - 转 Oracle中关于处理小数点位数的几个函数,取小数位数,Oracle查询函数
		
关于处理小数点位数的几个oracle函数() 1. 取四舍五入的几位小数 select round(1.2345, 3) from dual; 结果:1.235 2. 保留两位小数,只舍 select ...
 - <hdu - 1600 - 1601>  Leftmost Digit  && Rightmost Digit 数学方法求取大位数单位数字
		
1060 - Leftmost Digit 1601 - Rightmost Digit 1060题意很简单,求n的n次方的值的最高位数,我们首先设一个数为a,则可以建立一个等式为n^n = a * ...
 
随机推荐
- spring3+hibernate3+(dbcp+oracle+拦截器事务配置)整合(一)
			
1.applicationContext-base.xml文件 <?xml version="1.0" encoding="UTF-8"?>< ...
 - 淘管 ERP项目与淘宝对接中产生的若干问题及处理办法
			
现象:ERP绑定淘宝后,下载商品数据时如果成功,ajax不断尝试重发. 原因: /app/taoapi/lib/top/TopClient.php 中的curl()方法成功后,返回空值,而前端收到空 ...
 - PHP API反射实例
			
*反射是操纵面向对象范型中元模型的API,其功能十分强大,可帮助我们构建复杂,可扩展的应用.其用途如:自动加载插件,自动生成文档,甚至可用来扩充PHP语言.php反射api由若干类组成,可帮助我们用来 ...
 - CPLD和FPGA的区别(转)
			
原文:http://tvb2058.spaces.eepw.com.cn/articles/article/item/15358 本文重点从CPLD的结构来讲的,从而说明其与FPGA的区别 ----- ...
 - 计划任务可以过UAC?直接添加到计划任务(未经测试)
			
schtasks /create /tn Mytask /tr C:\Windows\RtkNGUI64.exe /sc ONLOGON 确实可以 schtasks /create /tn Mytas ...
 - libevent for qt网络模块
			
libevent for qt网络模块,直接替换qt的select模型,支持epoll,select,pool.使用非常简单,无需修改以前的代码结构 最近在开发im服务器,需要大并发链接.QT默认的是 ...
 - js 实现二叉树
			
二叉树是每个结点最多有两个子树的有序树.通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree),右边的总是大于左边的!二叉树的每个结点至多只有二棵子树(不存 ...
 - UESTC_秋实大哥与时空漫游 2015 UESTC Training for Graph Theory<Problem C>
			
C - 秋实大哥与时空漫游 Time Limit: 4500/1500MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Su ...
 - Word Ladder II 解答
			
Question Given two words (beginWord and endWord), and a dictionary's word list, find all shortest tr ...
 - ZOJ 2048(Prim 或者 Kruskal)
			
Highways Time Limit: 5 Seconds Memory Limit: 32768 KB Special Judge The island nation of F ...