首页 技术 正文
技术 2022年11月14日
0 收藏 917 点赞 3,931 浏览 798 个字

题目大意

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

怎么做

一句话攻略算法核心在于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;
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,075
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,551
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,399
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,811
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,893