zoukankan      html  css  js  c++  java
  • HDU 2522 A simple problem( 分数循环节 )


    **链接:****Here! **

    思路:模拟除法,当余数再次出现的时候一定是遇到了循环节( 可看下图例子 ),否则的话继续除法的步骤,直到被除数为 0 。

    图一

    注意:这道题不需要重新申请一个数组来单独存放答案,如果符合要求直接输出即可,如果申请一个数组来存放答案,每次都需要情况答案数组,极大的浪费了时间,很容易T


    /*************************************************************************
        > File Name: hdu2522.cpp
        > Author:    WArobot 
        > Blog:      http://www.cnblogs.com/WArobot/ 
        > Created Time: 2017年06月28日 星期三 16时24分24秒
     ************************************************************************/
    
    #include <stdio.h>
    #include <string.h>
    
    #define MAX_RANGE 100000				// .. 一定得开大点!
    
    int HowManyReciprocalCycles(int n) {	// 返回分数循环节的长度
    	int rest[MAX_RANGE + 10] = {0};
    	int ret = 1 , ind = 0;
    	while (rest[ret] == 0 && ret) {
    		rest[ret] = ++ind;
    		ret *= 10;
    		printf("%d",ret / n);
    		ret %= n;
    	}
    	return ret ? ind - rest[ret] : 0;
    }
    int main() {
    	int T , n , flag;
    	scanf("%d",&T);
    	while (T--) {
    		scanf("%d",&n);
    		if (n < 0)	printf("-") , n = -n;
    		if (n == 1)	{	
    			printf("1
    ");	continue;
    		}
    		printf("0.");
    		int ret = HowManyReciprocalCycles(n);
    		printf("
    ");
    	}
    	return 0;
    }
  • 相关阅读:
    [Windows Powershell]-学习笔记(1)
    MyBatis For .NET学习-问题总结
    Zynq学习笔记(1)
    规范的位操作方法
    浮点数转换成字符串函数
    测试卡尔曼滤波器(Kalman Filter)
    关于按键扫描程序的终极讨论
    关于STM8的用户数据空间读写问题
    IPv4分析
    关于STM8空间不足的解决方法
  • 原文地址:https://www.cnblogs.com/WArobot/p/7091333.html
Copyright © 2011-2022 走看看