题目来源:2016 CCPC 长春站

题意:青蛙先生想计算一个式子的值,输入两个数列a[],b[]求出最后的分子和分母



思路:一开始看到这个图片首先想到的是递归实现,递归部分始终计算的是右下部分

/*************************************************************************
> File Name: A.cpp
> Author: WArobot
> Mail: 768059009@qq.com
> Created Time: 2017年04月15日 星期六 21时10分45秒
************************************************************************/ #include<bits/stdc++.h>
#include<cstdio>
using namespace std; long long n,a[100],b[100];
long long p,q;
void fun(long long step,long long z,long long m){
long long t1 = m*b[step-1] , t2 = m*a[step-1]+z;
if(step==1) {
p = t1 ; q = t2 ;
return;
}
fun(step-1, t1 , t2 );
}
int gcd(long long a,long long b){
return b==0?a:gcd(b,a%b);
}
int main(){
int t,kase = 0;
scanf("%d",&t);
while(t--){
scanf("%lld",&n);
for(int i=0;i<n;i++) scanf("%lld",a+i);
for(int i=0;i<n;i++) scanf("%lld",b+i);
p = q = 0;
if(n<=1) p = b[0] , q = a[0];
else fun(n-1,b[n-1],a[n-1]);
int d = gcd(p,q);
if(d!=0){
p /= d; q /= d;
}
printf("Case #%d: %lld %lld\n",++kase,p,q);
}
return 0;
}

后来一想为啥非得要用递归做......

/*************************************************************************
> File Name: A2.cpp
> Author: WArobot
> Mail: 768059009@qq.com
> Created Time: 2017年04月16日 星期日 20时35分55秒
************************************************************************/ #include<bits/stdc++.h>
using namespace std; int t , kase = 0 , n;
int a[100] , b[100];
int p,q; // p为分子 q为分母
int gcd(int a,int b){
return b==0?a:gcd(b,a%b);
}
void solve(){
p = b[n-1] , q = a[n-1];
for(int i=n-2;i>=0;i--){
int t1 = p , t2 = q;
p = t2*b[i];
q = t2*a[i] + t1;
}
int d = gcd(p,q);
p /= d; q /= d;
}
int main(){
int kase = 0;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%d",a+i);
for(int i=0;i<n;i++) scanf("%d",b+i);
solve();
printf("Case #%d: %d %d\n",++kase,p,q);
}
return 0;
}

最新文章

  1. Angular表单验证
  2. 算法_队列的Java通用数组实现
  3. nginx的rewrite,gzip,反向代理学习笔记
  4. svn不能更新也不能提交【svn A conflict in the working copy obstructs the current operation】
  5. Darwin Streaming Server 6.0.3安装、订制、插件或模块
  6. UML 中关系详解以及在visio中的表示
  7. hdu 1106 排序
  8. 《Programming Massively Parallel Processors》Chapter5 习题解答
  9. SSH自动断开连接的原因
  10. IOS传值之Block传值(二)
  11. winform连接oracle时Oracle.DataAccess.dll版本问题
  12. 网络服务器系统wamp的安装
  13. 【安富莱二代示波器教程】第6章 示波器设计—双通道ADC驱动
  14. 用户在浏览器中输入一个url发生的奥秘
  15. 都是分号惹的祸 ORA-00911
  16. Python 安装 lxml 插件
  17. dns资源记录类型
  18. 解决VS2013 git客户端遇到的一些问题
  19. Java 大型系统高并发大数据的处理方式
  20. Motan

热门文章

  1. BZOJ 3878 [AHOI&amp;JSOI2014]奇怪的计算器 (线段树)
  2. FactoryBean简介
  3. The Basics of Numpy
  4. CDH版hbase-0.98.1单机安装
  5. HDU 3886
  6. hadoop分布式架构和设计
  7. java应用集锦9:httpclient4.2.2的几个常用方法,登录之后访问页面问题,下载文件
  8. File and Folder Permissions
  9. webrtc所有平台下载编译步骤详细说明
  10. 关于udebug的使用