一道迅雷笔试题:用C++如何找出循环节

miracle_1986 2010-10-05 04:32:35
求循环节,若整除则返回NULL,否侧返回char*指向循环节。先写思路。
...全文
578 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
luyaozhi 2010-10-06
  • 打赏
  • 举报
回复
看来迅雷的面试和笔试比较难啊
miracle_1986 2010-10-05
  • 打赏
  • 举报
回复
好的 到时候我找找 这道题是迅雷二笔原题 快找工作了 所以想准备下 这边23号有迅雷笔试 听说迅雷有两次笔试 一笔较基础 二笔一般是3道算法题 有没有那位大虾笔试过呢 可不可以传授下经验呀 不胜感激
ayw215 2010-10-05
  • 打赏
  • 举报
回复
微软编程之美上面有这个原题
GoonYangXiaofang 2010-10-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 miracle_1986 的回复:]
恩 就是2楼说的那个意思!其实我是有这种思路:
例如1/7=0.142857142857142857.....
题目的要求应该是把结果存储在一个char*类型里 然后返回的是指向7的指针(循环节为142857);
做法应该不难 首先应该分离出小数点的每一位数字 例如 1 4 2 8 5 7...

C/C++ code

long double x=1.0/7;
……
[/Quote]

用字符串存储
分数一定是有理数,若是无限小数,必是循环的
miracle_1986 2010-10-05
  • 打赏
  • 举报
回复
恩 就是2楼说的那个意思!其实我是有这种思路:
例如1/7=0.142857142857142857.....
题目的要求应该是把结果存储在一个char*类型里 然后返回的是指向7的指针(循环节为142857);
做法应该不难 首先应该分离出小数点的每一位数字 例如 1 4 2 8 5 7...

long double x=1.0/7;
long double currNum=x;
int int_part;
double float_part;
for(int i=0;i<25;++i)
{
currNum*=10;
int_part=(int)currNum;
float_part=currNum-int_part;
currNum=float_part;
cout<<int_part;
}

然后根据每一位数字来找循环节 就是重复的数字串 我遇到的问题是如果循环节过大例如有二十多位 那么这个结果用double类型能存储下来吗?还有如果这个结果不是循环小数 那循环多少次才算证明该数不存在循环节呢?
  • 打赏
  • 举报
回复
大概明白你的意思,可是现在我还想不到呢!

就是给两个数(整型或浮点),然后一个数除另一个数,看是否除尽。除尽,返回NULL,否则,返回除不尽的小数循环节;就像1/3 = 0.333333333,循环节就应该是3;

应该就是这个意思!
Csuxiaowu 2010-10-05
  • 打赏
  • 举报
回复
实在不明白你的意思 ----------------

65,202

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧