博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2019.7.7 校内测试题 分数化小数
阅读量:5059 次
发布时间:2019-06-12

本文共 2047 字,大约阅读时间需要 6 分钟。

 题目

  分数化小数(fracdec.cpp,128MB,1s)

【问题描述】:

  写一个程序,输入一个形如 N/D 的分数(N 是分子,D 是分母),输出它的
小数形式。如果小数有循环节的话,把循环节放在一对括号中。例如:
1/3=0.33333… 写成 0.(3);41/333=0.123123123… 写成 0.(123)。
用*.0 表示整数,如 2/2=1.0

【输入文件】:

   单独的一行包括被空格隔开的 N 和 D。(1≤N、D≤100000)

【输出文件】:

  输出一行,即分数 N/D 的小数形式。

【输入输出样例】:

  
  样例 1:
    fracdec.in
      45 46
    fracdec.out
      0.803(571428)
  样例 2:
    fracdec.in
      3 8
    fracdec.out
      0.375
  样例 3:
    fracdec.in
      8 4
    fracdec.out
      4.0

【数据规模】:

  如上

 

 

考试得分:  60

 

 

主要算法 :  除法(循环节性质)

 

 

 

题干:

    分数化为小数

 

 

应试策略:

  1.现将小数点前的lead求出,特殊处理没有小数点后的情况

  2.再将整除的特殊处理

  3.剩下的用KMP进行枚举

   代码

 

#include
#include
#include
#define FORa(i,s,e) for(int i=s;i<=e;i++)#define FORs(i,s,e) for(int i=s;i>=e;i--)#define File(name) freopen(name".in","r",stdin),freopen(name".out","w",stdout)using namespace std;const int N=100;int a,b,lead,cnt;string s="";bool Check(string ss,int sp){ int len=ss.size(); FORa(k,1,6) { FORa(i,1,len) if(ss[i-1]!=s[sp+len+i-1]) return 0; sp=sp+len; } }void Init(){ scanf("%d%d",&a,&b); lead=a/b,a=a%b,a*=10; if(!a) {printf("%d.0",lead);return;} while(a&&cnt<=500) s=s+char(a/b+'0'),a=(a%b)*10,cnt++; if(!a) {printf("%d.",lead),cout<

 

 

 

 

 

 

非完美算法:  

    照搬应试策略

 

 

正解:

    初等数学(循环节的基本性质),知道循环节的出现为除数再次出现

  代码

   

#include#include
#include
#include
#define FORa(i,s,e) for(int i=s;i<=e;i++)#define FORs(i,s,e) for(int i=s;i>=e;i--)#define File(name) freopen(name".in","r",stdin),freopen(name".out","w",stdout)using namespace std;const int N=100;int a,b,lead,cnt;string s="";map
mp;void Init(){ scanf("%d%d",&a,&b); lead=a/b,a=a%b,a*=10,mp[a]=++cnt; if(!a) {printf("%d.0",lead);return;} while(a) { s=s+char(a/b+'0'),a=(a%b)*10,++cnt; if(mp[a]) { printf("%d.",lead); for(int i=0;i

 

 

 

 

总结:

  知道循环节的出现为除数再次出现

 

 

 

 

 

 

转载于:https://www.cnblogs.com/SeanOcean/p/11172663.html

你可能感兴趣的文章
Round #345 B. Beautiful Paintings(Div.2)
查看>>
51nod 1018排序
查看>>
sqlite的坑
查看>>
digitalocean --- How To Install Apache Tomcat 8 on Ubuntu 16.04
查看>>
linux swoole
查看>>
An Easy Problem?! - POJ 2826(求面积)
查看>>
【题解】[P4178 Tree]
查看>>
Jquery ui widget开发
查看>>
css3实现循环执行动画,且动画每次都有延迟
查看>>
更改git仓库地址
查看>>
有标号DAG计数 [容斥原理 子集反演 组合数学 fft]
查看>>
Recipe 1.4. Reversing a String by Words or Characters
查看>>
Rule 1: Make Fewer HTTP Requests(Chapter 1 of High performance Web Sites)
查看>>
sql注入
查看>>
「破解」Xposed强
查看>>
Linux 平台下 MySQL 5.5 安装 说明 与 示例
查看>>
src与href的区别
查看>>
ABAP工作区,内表,标题行的定义和区别
查看>>
《xxx重大需求征集系统的》可用性和可修改性战术分析
查看>>
Python 中 创建类方法为什么要加self
查看>>