社区
C++ 语言
帖子详情
如何快速取出整数的第一位数
twtfcu3
2005-03-13 04:41:20
如何快速取出整数的第一位数
例如
整数 45852
取出第一位 4
最后成为 5882
...全文
4865
25
打赏
收藏
如何快速取出整数的第一位数
如何快速取出整数的第一位数 例如 整数 45852 取出第一位 4 最后成为 5882
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
25 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
twtfcu3
2005-03-14
打赏
举报
回复
1
大伙看看这个
我想了一个程序
#include <stream.h>
int main(){
int a=5547851;
int m;
while(a%10)
{
m = a%10;
a /= 10;
}
cout<<m<<endl;
}
这个运行要快一些
krw
2005-03-14
打赏
举报
回复
int main()
{
int n=45852;
n=n/10000; //amn=4;
cout<<n;
}
BoBo008
2005-03-14
打赏
举报
回复
支持languagec(各有所求.死于右手)的算法,
而且可以取任意位数
structme
2005-03-14
打赏
举报
回复
languagec(各有所求.死于右手) ( ) 信誉:100 2005-3-13 9:03:07 得分: 0
#include "stdio.h"
void main()
{
int n;
char buf[10];
sprintf(buf,"%d",n);
printf("%c\n",buf[0]);
}
------------------------------------------
取第一个就是了吧?
同意他的
tiaoci
2005-03-14
打赏
举报
回复
就像下面这样,只需要做一次 mod + Log(2,n)次的比较
理论上应当是比较快的,当然也有可能由于代码比较多
导致速度反而比不上上面的循环除也有可能,没有试过
#include <stdio.h>
int map[] = {0,10,100,1000,10000,
100000,1000000,10000000,100000000,
1000000000,10000000000};
int shift_num(int n)
{
int low = 0;
int high = 10;
int mid = 0;
while(low < high)
{
mid = (low + high) / 2;
if(n == map[mid]) return 0;
if(n < map[mid])
{
high = mid - 1;
}
else if(n > map[mid])
{
low = mid + 1;
}
}
if(map[low] == 0) return n;
return n % (map[low]);
}
int main()
{
printf("%d\n",shift_num(0));
printf("%d\n",shift_num(1));
printf("%d\n",shift_num(12345));
printf("%d\n",shift_num(10007600001));
}
tiaoci
2005-03-14
打赏
举报
回复
使用一个对照表然后用折半查找这样会快点
tiaoci
2005-03-14
打赏
举报
回复
上面的算法都不好,因为需要计算n位循环
cxyol
2005-03-14
打赏
举报
回复
//highnum.h
#ifndef _P1_H_
#define _P1_H_
#define NUM_SYS 10 //number system, decimal assumed as default.
int HighNum(int Value);
#endif //_P1_H_
//highnum.c
//Get the highest number of an integer.
#include "highnum.h"
int HighNum(int Value){
while(Value >= NUM_SYS){
Value /= NUM_SYS;
}
return Value;
}
shine51151
2005-03-14
打赏
举报
回复
re: tiaoci(我挑刺,我快乐)
方法倒是不错 不过我发现你的程序有两个错误:
int shift_num(int n)
{
int low = 0;
int high = 10;
int mid = 0;
while(low < high)
{
mid = (low + high) / 2;
if(n == map[mid]) return 1; /* 这里应该返回1 而不是返回0
if(n < map[mid])
{
high = mid - 1;
}
else if(n > map[mid])
{
low = mid + 1;
}
}
if(map[low] == 0) return n;
return n / (map[low]); /* 这里应该是除号/ 而不是模%
}
shine51151
2005-03-14
打赏
举报
回复
re: niuniu(你牛)
应该是 J = n / I;
不该是 J = n % I;
这样才会返回整数n的最高位
CloudOfFly
2005-03-14
打赏
举报
回复
UP
hhoo
2005-03-14
打赏
举报
回复
右移N-1位!
foru1971
2005-03-14
打赏
举报
回复
languagec(各有所求.死于右手)的这个算法最简单明了
Kvci
2005-03-14
打赏
举报
回复
___________________________________________________________________________________
回复人: languagec(各有所求.死于右手) ( ) 信誉:100 2005-3-13 9:03:07 得分: 0
#include "stdio.h"
void main()
{
int n;
char buf[10];
sprintf(buf,"%d",n);
printf("%c\n",buf[0]);
}
-------------------------------------------------------------------------------
高
niniu
2005-03-14
打赏
举报
回复
int GetFirstNum(int n)
{
int I,J;
I = 1;
do
{
J = n % I;
if(J < 10) return J;
else I = I * 10;
}while(1)
}
goodVcBoy
2005-03-14
打赏
举报
回复
如前有人所进可转为字符串,再取第一个字符。同意!
不过我下面的算法也很简单的,调试通过了的!
int main(int argc, char* argv[])
{
int data = 950943;
int m = data/10;
while(m >=10)
{
m /= 10;
}
cout<<m<<endl;
return;
}
LoveCreatesBeauty
2005-03-14
打赏
举报
回复
Get the highest number of an integer
http://www.cnblogs.com/lovecreatesbeauty/archive/2005/03/14/118150.html
tangtao94
2005-03-14
打赏
举报
回复
变成字符串,然后取头
languagec
2005-03-13
打赏
举报
回复
#include "stdio.h"
void main()
{
int n;
char buf[10];
sprintf(buf,"%d",n);
printf("%c\n",buf[0]);
}
zengwujun
2005-03-13
打赏
举报
回复
#include <iostream>
#include <math.h>
using namespace std;
int convert(int num)
{
int num1=0;
int nLength=0;
while(num>=10)
{
num1 = num1 + num%10*pow(10,nLength);
++nLength;
num = num/10;
}
return num1;
}
void main()
{
int num=45853;
cout<<convert(num)<<endl;
}
加载更多回复(5)
c代码-10.键盘输入一个正
整
数
s,从低位开始
取出
s中奇
数
位上的
数
作为高位,依次构成一个新
数
输出。例如,输入"54321",输出"135"。
c代码-10.键盘输入一个正
整
数
s,从低位开始
取出
s中奇
数
位上的
数
作为高位,依次构成一个新
数
输出。例如,输入"54321",输出"135"。
Python3实现个位
数
字和十位
数
字对调, 其乘积不变
主要介绍了Python3实现个位
数
字和十位
数
字对调, 其乘积不变,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
算法 基
数
排序 PPT演示
基
数
排序动态分步骤讲解 适合csp初赛备考人员,算法学习人员 轻松理解基
数
排序
C++ 基
数
排序的实现实例代码
主要介绍了C++ 基
数
排序的实现实例代码的相关资料,这里附有实例代码,帮助大家学习理解,需要的朋友可以参考下
C语言 -
取出
整
数
中的具体位
数
C语言 -
取出
整
数
中的具体位
数
C++ 语言
65,179
社区成员
250,527
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章