当前位置: 首页 > news >正文

UVA202 UVALive5141 Repeating Decimals

World Finals >> 1990 - Washington


问题链接:UVA202 UVALive5141 Repeating Decimals。基础训练级的问题,用C语言编写程序。

问题简述输入两个整数numerator和denominator,分别为分子和分母。0≤分子,1≤分母≤3000。输出a/b的循环小数表示以及循环节长度。如果循环周期大于50,只显示50位,之后的全部用“...”表示

问题分析:先取出整数部分(numerator/denominator的商),然后用余数numerator%denominator的余数)计算小数点后的各位。每次将余数先乘以10,就可以取出小数及其余数,循环往复。某两个位余数部分相同则表示,则表示这个区间小数点后的位形成循环

该把该题归类为哪一类,有点困惑,也许归为模拟题是合适的,因为只要模拟人的计算过程就可以了。其实,这个题是一个数学题。

程序说明:程序中,循环控制条件有点变态,但是是正确的。


AC的C语言程序如下:

/* UVA202 UVALive5141 Repeating Decimals */

#include <stdio.h>

#define MAXN 3000

int decimal[MAXN];
int numerator[MAXN];

int main(void)
{
    int n, d, start, end, i, j;

    while(scanf("%d%d", &n, &d) != EOF) {
        i = 0;
        numerator[i] = n % d;
        decimal[i] = numerator[i] * 10 / d;

        for(i=1; ;i++) {
            numerator[i] = numerator[i-1] * 10 % d;
            decimal[i] = numerator[i] * 10 / d;

            for(j=0; j<i; j++)
                if(numerator[j] == numerator[i])
                    break;
            if(j < i) {
                start = j;
                end = i - 1;
                break;
            }
            if(numerator[i] == 0) {
                start = i;
                end = i;
                break;
            }
        }

        printf("%d/%d = %d.", n, d, n / d);
        for(i=0; i<start; i++)
            printf("%d", decimal[i]);
        printf("(");
        if(end - start + 1 > 50) {
            for(i=start; i<start+50; i++)
                printf("%d", decimal[i]);
            printf("...");
        } else {
            for(i=start; i<=end; i++)
                printf("%d", decimal[i]);
        }
        printf(")\n");
        printf("   %d = number of digits in repeating cycle\n\n", end - start + 1);
    }

    return 0;
}


转载于:https://www.cnblogs.com/tigerisland/p/7564513.html

相关文章:

  • Oracle练习(2)
  • 巡检查看数据库Process 连接数
  • android-UI组件(四):AdapterView及其子类
  • 让Unity NavMesh为我所用
  • Log打印的:D/dalvikvm(4342): GC_FOR_ALLOC freed
  • servlet的执行原理与生命周期
  • 数组增删改查及冒泡
  • TCP连接状态详解及TIME_WAIT过多的解决方法
  • zabbix架构
  • nginx: bind() to 0.0.0.0:8001 failed (13: Permission denied)
  • Linux统计文件行数
  • ACM竞赛:立方和问题
  • 初级运维(一)
  • 九曲黄河万里沙,浪淘风簸自天涯 — 正则表达式
  • 【PHP】函数explode和split的区别
  • [NodeJS] 关于Buffer
  • 「面试题」如何实现一个圣杯布局?
  • 【mysql】环境安装、服务启动、密码设置
  • EventListener原理
  • Git初体验
  • interface和setter,getter
  • spring boot 整合mybatis 无法输出sql的问题
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • Vue全家桶实现一个Web App
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 解析 Webpack中import、require、按需加载的执行过程
  • 京东美团研发面经
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 巧用 TypeScript (一)
  • 深入 Nginx 之配置篇
  • 手机端车牌号码键盘的vue组件
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • Mac 上flink的安装与启动
  • 积累各种好的链接
  • ​ubuntu下安装kvm虚拟机
  • # Panda3d 碰撞检测系统介绍
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #Java第九次作业--输入输出流和文件操作
  • #每天一道面试题# 什么是MySQL的回表查询
  • (42)STM32——LCD显示屏实验笔记
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (WSI分类)WSI分类文献小综述 2024
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (四)图像的%2线性拉伸
  • (一)认识微服务