题目大意

计算循环小数的位数,并且按照格式输出

怎么做

一句话攻略算法核心在于a=a%b*10,用第一个数组记录被除数然后用第二个数组来记录a/b的位数。然后用第三个数组记录每一个被除数出现的位置好去寻找循环节的位置。

我的代码(算法还是借鉴)

#include <iostream>
#include <cstring>
using namespace std;
int ar[300000];
int re[300000];
int lc[300000];
int main()
{
int a,b;
while(cin>>a>>b)
{
int a1=a;int b1=b;
int now=1;int ck;
ck=a/b;
a=a%b*10;
memset(re,0,sizeof(re));
while(re[a]==0)
{
re[a]=1;
lc[a]=now;//这个地方真的非常非常的厉害,第一遍看都没有看懂,实际上这有点预处理记录的感觉
ar[now]=a/b;
now++;
a=a%b*10;
}
if(ck<0)
printf("%d/%d = 0.",a1,b1);
else
printf("%d/%d = %d.",a1,b1,ck);
if(now-lc[a]==0)
{
for(int i=1;i<lc[a];i++)
cout<<ar[i];
cout<<"(0)\n";
}
else
{
for(int i=1;i<lc[a];i++)
cout<<ar[i];
cout<<"(";
if(now-lc[a]<50)
for(int i=lc[a];i<now;i++)
cout<<ar[i];
else
{
for(int i=lc[a];i<lc[a]+50;i++)
cout<<ar[i];
cout<<"...";
}
cout<<")\n";
cout<<" "<<now-lc[a]<<" = number of digits in repeating cycle\n\n";
}
}
return 0;
}

最新文章

  1. app端上传文件至服务器后台,web端上传文件存储到服务器
  2. iOS加密方式及解压缩文件
  3. 锋利的jQuery-读书笔记(二)
  4. UNIX环境高级编程笔记之进程环境
  5. Linq使用Distinct删除重复数据时如何指定所要依据的成员属性zz
  6. .NET DES 加密
  7. Android:自定义控件样式(Selector)
  8. 一,XAML基础
  9. Entity Framework4.0 (六) EF4的 增加、删除、更改
  10. Android Configuration change引发的问题及解决方法
  11. D、GO、Rust 谁会在未来取代 C?为什么?——Go语言的定位非常好,Rust语言非常优秀,D语言也不错
  12. WebService之Axis2
  13. Heritrix个性化设置抓取目标
  14. Linux c c++ 开发调试技巧
  15. call, apply,bind 方法解析
  16. TLD算法原理--学习理解之(二)
  17. 新概念英语(1-13)A new dress
  18. Data Center(5): 实例
  19. kettle用mysql创建资源库执行sql代码报错
  20. 17秋 软件工程 团队第五次作业 Alpha Scrum4

热门文章

  1. Unix/Linux环境C编程新手教程(40) 初识文件操作
  2. 调用线程必须为 STA,因为许多 UI 组件都需要
  3. 怎样编辑LRC歌词
  4. 从基于 SQL 的 CURD 操作转移到基于语义 Web 的 CURD 操作
  5. J - 玩游戏
  6. InfluxDB 分布式时间序列数据库环境搭建——据qcon大会2016qiniu说集群很坑且闭源了
  7. Scala快速统计文件中特定单词,字符的个数
  8. hibernate基础简单入门1---helloword
  9. [Swift通天遁地]二、表格表单-(3)在表格中嵌套另一个表格并使Cell的高度自适应
  10. 绝对牛x的代码注释