• 蓝桥杯2020年第十一届国赛真题循环小数


    题目要求

    题目描述

    已知 S 是一个小于 1 的循环小数,请计算与 S 相等的最简真分数是多少。
    例如 0 . 3333 · · · 等于 1/3,0 . 1666 · · · 等于 1/6。

    输入

    输入第一行包含两个整数 p 和 q,表示 S 的循环节是小数点后第 p 位到第q 位。第二行包含一个 q 位数,代表 S 的小数部分前 q 位。

    输出

    输出两个整数,用一个空格分隔,分别表示答案的分子和分母。

    样例输入

    1 6

    142857

    样例输出

    1 7

    提示

    【评测用例规模与约定】
    对于所有评测用例,1 ≤ p ≤ q ≤ 10

    解题思路

    代码

    #include<bits/stdc++.h>
    using namespace std;
    //取得最大公约数 
    long gcd(long a,long b){
    	if(b==0) return a;
    	else return gcd(b,a%b);
    }
    int main(){
    	long p,q; 
    	long L; //存放循环体
    	long F; //存放非循环体 
    	long res1,res2; //分子、分母  
    	cin>>p>>q;
    	cin>>L;
    	F=L/pow(10,q-p+1);
    	res1=L-F;
    	res2=pow(10,q)-pow(10,p-1);
    	long gcd1 = gcd(res1,res2);
    	res1/=gcd1;
    	res2/=gcd1;
    	cout<<res1<<" "<<res2<<endl; 
    	return 0;
    }
     
  • 相关阅读:
    开发脚本自动部署及监控
    内存进程与软件包安装
    Linux常用指令
    网络协议
    Python基础(二)
    python基础(一)
    shell编程
    正则与sed,grep,awk三剑客
    网络配置和元字符
    nginx
  • 原文地址:https://www.cnblogs.com/ltw222/p/16113436.html
Copyright © 2020-2023  润新知