CodeForces:305B Continued Fractions
来源:互联网 发布:php数组按id排序 编辑:程序博客网 时间:2024/05/23 21:58
这道题很容易想到用double存下各个数,然后倒序依次求,最后比较是否相同。
当然题目不会这样简单,会存在难以解决的精度问题。
例如输入
100 1
2
100 1000000000000000000
就会输出YES
所以应该仔细分析这式子,绕过精度问题。
假如p/q等于,那么p/q-a1应该得到一个小数(或者当i=n-2时,可能得到1。想想为什么?),这个小数就是右部分。为避免精度问题这里不用double存而用longlong分别存分子分母,将该分数倒置,而右部分也变成其倒数,它的形式就又像开始那样了。每次计算p/q-ai,要注意除非i是最后一个,否则结果不能等于0,一旦为0应输出NO。
我开始没写关于p的这块,以至于最后循环从if第二个条件结束会什么也不输出而WA了多次。
所以应该保证从每个出口结束都会有输出。
#include<iostream>#include<cstdio>#include<cmath>#include<cstdlib>using namespace std;int main(){ //freopen("in.txt","r",stdin); long long mz,mu; cin>>mz>>mu; int n; cin>>n; double a[100]={0}; for(int i=0;i<n;++i) cin>>a[i]; bool p=false; for(int i=0;i<n;++i) { double res=(double)(mz)/mu-a[i]; if(!res&&i==n-1){cout<<"YES"<<endl;p=true;} else if(0<res&&res<=1) { mz-=mu*a[i]; long long t=mz; mz=mu; mu=t; } else { cout<<"NO"<<endl; p=true; break; } } if(p==false) cout<<"NO"<<endl; return 0;}
- CodeForces:305B Continued Fractions
- codeforces 305B. Continued Fractions(数学)
- codeforces 305B. Continued Fractions (递归的思想)
- CF 305B Continued Fractions
- Codeforces Round #184 (Div. 2) B. Continued Fractions
- Codeforces Round #184 (Div. 2)-B. Continued Fractions
- Problem E Codeforces Round #184 (Div. 2) B. Continued Fractions
- Continued Fractions
- uva 834 - Continued Fractions
- UVa 834 - Continued Fractions
- [CF]-Continued Fractions
- UVa834 Continued Fractions【连分数】
- Codeforces Round #184 (Div. 2) Continued Fractions 分数计算 long long相乘会越界
- Gym 100641A Continued Fractions || 简单数学题
- Gym 100641A Continued Fractions 模拟|签到
- Codeforces 396B On Sum of Fractions(数论)
- Codeforces 396B On Sum of Fractions 规律题
- Codeforces 396B On Sum of Fractions 数论
- linux 下串口命令
- javaScript用正则验证QQ
- 堆排序
- STM32复位时钟控制模块RCC
- 黑马程序员 java基础回顾---多线程
- CodeForces:305B Continued Fractions
- Opencv图像显示出现倒立
- IE和FF在对js支持的不同及解决方法
- 【原创】Java与数据结构(下篇:图)
- js中的事件触发
- Matroska文件格式标准
- Picture
- eclipse 导入工程后,注释为乱码解决方法
- KMP算法学习