zoukankan      html  css  js  c++  java
  • uva 202(Repeating Decimals UVA

    题目大意

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

    怎么做

    一句话攻略算法核心在于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)
    ";
    		}
    		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<<")
    ";
    			cout<<"   "<<now-lc[a]<<" = number of digits in repeating cycle
    
    ";
    		}
    	}
    	return 0;	
    } 
    
  • 相关阅读:
    inline-block 文字与图片不对齐
    js去除数组重复项
    react2
    kfaka windows安装
    sigar 监控服务器硬件信息
    Disruptor
    Servlet 3特性:异步Servlet
    jvmtop 监控
    eclipse如何debug调试jdk源码
    一致性hash算法
  • 原文地址:https://www.cnblogs.com/baccano-acmer/p/9755401.html
Copyright © 2011-2022 走看看