xtu oj 1374 连分数

2024-01-06 08:28
文章标签 oj xtu 连分数 1374

本文主要是介绍xtu oj 1374 连分数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述

x=b1a1+b2a2+b3a3+⋯

比如 n=3,a1=1,a2=2,a3=3,b1=3,b2=2,b3=1时

x=31+22+13=2113

给定n,ai,i=1,2,…,n,请求x,并按最简方式表示x。

输入

第一个行是一个整数T(1≤T≤100),表示样例的个数。 以后每个样例的第一行为整数n(1≤n≤9); 第二行为n个整数,为ai,(1≤ai≤100); 第三行为n个整数,为bi,(1≤bi≤100)。

输出

按顺序输出一个样例的结果,如果结果为整数,输出整数;如果结果为分数,格式为"分子/分母",保证分子与分母互质。

样例输入

3
3 
1 2 3
3 2 1
3
1 2 3
4 7 1
9
100 100 100 100 100 100 100 100 100
99 99 99 99 99 99 99 99 99

样例输出

21/13
1
1060072063970000499/1081277664009800500

AC代码

#include<stdio.h>
long long gcd(long long a,long long b){long long t;while(a%b!=0){t=a%b;a=b;b=t;}return b;
}
int main()
{int T;scanf("%d",&T);while(T--){int n;scanf("%d",&n);int a[105]={},b[105]={};int i;for(i=0;i<n;i++){scanf("%d",&a[i]);}for(i=0;i<n;i++){scanf("%d",&b[i]);}long long fz=b[n-1],fm=a[n-1];long long g;for(i=n-2;i>=0;i--){long long t=fz;fz=b[i]*fm;fm=a[i]*fm+t;}if(fz%fm==0)printf("%I64d\n",fz/fm);else{g=gcd(fz,fm);fz/=g;fm/=g;printf("%I64d/%I64d\n",fz,fm);}}
}

注意,要在最后一步进行化简。从内层开始找规律。

这篇关于xtu oj 1374 连分数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/575775

相关文章

二叉树经典OJ练习

个人主页:C++忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C++忠实粉丝 原创 二叉树经典OJ练习 收录于专栏【数据结构初阶】 本专栏旨在分享学习数据结构学习的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 前置说明  1. 单值二叉树 2. 相同的树 3. 对称二叉树 4. 二叉树的前序遍历 5. 二叉树中序遍历 6. 二叉树的后序遍历 7. 另一

链表OJ

GDUFE  在期末前再刷一次链表题  ~ 203. 移除链表元素 - 力扣(LeetCode) /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/struct ListNode* removeElements(struc

杭电OJ 1233 还是畅通工程

杭电OJ 1233 还是畅通工程 题目链接 Problem Description某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。 Input测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N

链表OJ--超详细解析

链表OJ 文章目录 链表OJ1. 反转链表2. 返回K值3. 链表的中间节点4. 回文链表5. 相交链表6. 带环链表6.1 为什么一定会相遇,有没有可能会错过,或者出现永远追不上的情况,请证明6.2 slow一次走一步,fast如果一次走3步,走4步,走5步还能追上吗,请证明 7. 带环链表27.1 为什么它们最终肯定会在入口点的位置相遇,请证明 8. 复制链表结语 1. 反

北大oj Coins

Problem: 北大oj Coins 文章目录 思路解题方法复杂度Code 思路 题目要求我们找出所有可能组成的金额总数,给定一系列硬币面值和每种硬币的数量。我们使用动态规划来解决这个问题。关键在于如何处理每种硬币数量大于1的情况,这需要对余数进行分组,以便于在遍历时能够有效地更新状态。 解题方法 我们首先初始化一个布尔数组dp,其长度为最大目标金额m加上1

连分数(百度2018校招)

题目的主要做法就是将这个分数的值计算出来,而考虑到float型数据不能完全表示,可以保存分子分母的格式: #include <vector>#include <string>#include <iostream>#include <algorithm>using namespace std;void calc(vector<int> &nums, int &fenzi, int

【背包题】oj题库

目录 1282 - 简单背包问题 1780 - 采灵芝 1888 - 多重背包(1)​编辑 1891 - 开心的金明 2073 - 码头的集装箱 1905 - 混合背包 1282 - 简单背包问题 #include <bits/stdc++.h>using namespace std;//二维数组:dp[i][j]=max(dp[i-1][j],v[i]

Light OJ 1234 Harmonic Number 调和级数部分和

题目来源:Light OJ 1234  Harmonic Number 题意: 思路:没思路啊 这个是高数的东西 发散 n足够大时它无穷大 直接公式解 #include <cstdio>#include <cstring>#include <cmath>#include <string>#include <algorithm>#include <iostream>usi

Light OJ 1054 Efficient Pseudo Code 求n^m的约数和

题目来源:Light OJ 1054 Efficient Pseudo Code 题意:求n的m次这个数的所有的约数和 思路:首先对于一个数n = p1^a1*p2^a2*p3^a3*…*pk^ak  约束和s = (p1^0+p1^1+p1^2+…p1^a1)(p2^0+p2^1+p2^2+…p2^a2)…(pk^0+pk^1+pk^2+…pk^ak) 然后就是先求素数表 分解因子 然后求

Light OJ 1028 Trailing Zeroes (I) 求n因子数

题目来源:Light OJ 1028 题意:求一个数转化成任意进制后末尾有0的种数 就是一个数因子的个数 思路:一个数可以被分解成若干素数相乘 p1^x1*p2^x2*...*pn^xn 根据乘法原理 因子数为 (x1+1)*(x2+1)*...*(xn+1) 注意剪枝 #include <cstdio>#include <cstring>#include <cmath>#inc