概率,递推,找规律,高精度(FXTZ II,hdu 4043)
总结一下吧。。
像这种题,输入很简单,就几个数,然而正常算运算量很大,或时间复杂度很高,或分类讨论很麻烦的题,就试试找规律吧。只能说很可能是找规律,但也有例外吧。
这题的话,手算或计算机算多几个小数据,要想清楚了别算错了。。找规律就靠它了啊。。如果手算的话,心细一点可能就会发现递推关系式了,化简一下关系式就会变得很简单。没发现的话就把数列写出来,然后加减乘除看看相邻项有没有什么联系啊。。。再不行就看看能不能把Pn表示成Pi(i<n)。。。其实就是在做数学题。。。
以前做过有些题还打表找规律,甚至打表输出的。。。
代码
#include <string>
#include <vector>
#include <algorithm>
#include<iostream>
//#include<cstring>
#include<cstdio>
#include<sstream>
using namespace std;
string mul(string str1,string str2)
{vector<int> v_res(str1.size()+str2.size(),0);string::size_type i,j;vector<int>::size_type k,p;reverse(str1.begin(),str1.end());reverse(str2.begin(),str2.end());for(i = 0; i != str1.size(); ++i){for(j = 0; j != str2.size(); ++j){v_res[i+j] += (str1[i]-'0') * (str2[j] - '0');}}for(k = 0; k != v_res.size() - 1; ++k){v_res[k+1] += v_res[k] / 10;v_res[k] = v_res[k] % 10;}for(p = v_res.size() - 1; p != -1; --p){if(v_res[p] != 0) break;}if(p == -1) p = 0;string s_res(p+1,'0');for(k = p; k != -1; --k) s_res[p-k] = char(v_res[k] + '0');return s_res;}
string sub(string s1,string s2)
{int flag = 0;if(s1.length()<s2.length() || (s1.length()==s2.length() && s1 < s2)){flag = 1;string temp=s1;s1=s2;s2=temp;}int i,j;for(i=s1.length()-1,j=s2.length()-1;i>=0;i--,j--){s1[i]=char(s1[i]-(j>=0?s2[j]-'0':0)); //注意细节if(s1[i]-'0'<0){s1[i]=char(s1[i] + 10);s1[i-1]--;}}for(i = 0; i < s1.length(); i++){if(s1[i] != '0') break;}if(i == s1.length()) i = s1.length()-1;s1 = s1.substr(i);if(flag) s1 = "-" + s1;return s1;
}
string sum(string s1,string s2)
{if(s1.length()<s2.length()){string temp=s1;s1=s2;s2=temp;}int i,j;for(i=s1.length()-1,j=s2.length()-1;i>=0;i--,j--){s1[i]=char(s1[i]+(j>=0?s2[j]-'0':0)); //注意细节if(s1[i]-'0'>=10){s1[i]=char((s1[i]-'0')%10+'0');if(i) s1[i-1]++;else s1='1'+s1;}}return s1;
}string div(string s1,string s2)
{string res = "0";if(s1.length()<s2.length() || (s1.length()==s2.length() && s1 < s2)){return "0";}int i;int sub_length = s1.length() - s2.length();for(i = sub_length; i >= 0; i--){string s3(i,'0');string s4 = s2 + s3;do{string temp = sub(s1,s4);if(temp[0] == '-') break;else{s1 = temp;res = sum(res,("1" + s3));}}while(1);}return res;
}string gcd(string a,string b)
{return b=="0"?a:gcd(b,sub(a,mul(div(a,b),b)));
}int main()
{int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);string fz="1";string fm="1";string s1,s2;for(int i=1;i<=n;i++){stringstream ss;ss<<2*i-1<<" "<<2*i;ss>>s1>>s2;fz=mul(fz,s1);fm=mul(fm,s2);}string GCD=gcd(fm,fz);cout<<div(fz,GCD)<<"/"<<div(fm,GCD)<<endl;}return 0;
}
概率,递推,找规律,高精度(FXTZ II,hdu 4043)相关推荐
- MT【103】二阶递推找规律
评:如果直接找$a_n$的二阶递推式:$a_{n+2}-2\sqrt{2}a_{n+1}-a_n=0$有根号,不利于估计尾数. 转载于:https://www.cnblogs.com/mathstud ...
- *【HDU - 1517】【POJ - 2505】A Multiplication Game(博弈,递推找规律或SG函数)
题干: Stan and Ollie play the game of multiplication by multiplying an integer p by one of the numbers ...
- Codeforces 1327 E. Count The Blocks(递推找规律)
题意: 给出一个 n n n,求 1 0 n 10^n 10n 内长度为 1 1 1到 n n n的块分别有多少个.块的含义是连续相同数字的长度. 第一眼以为数位 d p dp dp 暴力打表出前几项 ...
- 牛客网 水题 递推找规律
链接: https://www.nowcoder.com/acm/contest/91/E 来源:牛客网 小Y买了很多苹果,但他很贪吃,过了几天一下就吃剩一只了.每一天小Y会数出自己的苹果个数X,如果 ...
- TSOJ 好好做题(屑)——递推状态压缩+高精度
文章目录 题目描述 解题思路 喜闻乐见的AC代码 补充一:高精度 补充二:状态压缩 完整注释代码 后记 题目描述 选修程序设计和算法课程的学生人数为 n,任课老师设置了 m 道练习题目(其中:1 &l ...
- 2018.09.01 poj3071Football(概率dp+二进制找规律)
传送门 概率dp简单题. 设f[i][j]表示前i轮j获胜的概率. 如果j,k能够刚好在第i轮相遇,找规律可以发现j,k满足: (j−1)>>(i−1)(j−1)>>(i−1) ...
- UVa 11021 (概率 递推) Tribles
Tribble是麻球? 因为事件都是互相独立的,所以只考虑一只麻球. 设f(i)表示一只麻球i天后它以及后代全部死亡的概率,根据全概率公式: f(i) = P0 + P1 * f(i-1) + P2 ...
- UVA11427玩纸牌(全概率+递推)
题意: 一个人玩纸牌游戏,他每天最多玩n局,枚举获胜的概率是a/b,每天玩牌只要获胜概率达到p,那么他今天就不玩了,明天接着玩,如果有一天他的概率没有达到p,(没有达到p的话他今天一定是玩 ...
- UVA 11021 - Tribles(概率递推)
UVA 11021 - Tribles 题目链接 题意:k个毛球,每一个毛球死后会产生i个毛球的概率为pi.问m天后,全部毛球都死亡的概率 思路:f[i]为一个毛球第i天死亡的概率.那么 f(i)=p ...
- [线性代数学习笔记] 线性递推数列及 Berlekamp-Massey 算法的详细推导过程
线性递推数列 线性递推 对于无限数列 {a0,a1,...}\{a_0,a_1,...\}{a0,a1,...} 和有限非空数列 {r0,r1,...,rm−1}\{r_{0},r_1,...,r ...
最新文章
- 2020年趋势一览:AutoML、联邦学习、云寡头时代的终结
- 新人python2和python3的区别_未明学院:Python2与Python3的主要区别
- Windows Phone 8 蓝牙标准
- Android AsyncTask分析
- 计算机启动程序bios_如何构建自己的计算机,第三部分:准备BIOS
- 【小项目】SSM 实现单表 CRUD
- C#关键字扫盲——Tuple(元组类) 、ValueTuple(值元组)
- 公司年会不知道送什么?2021平价高颜值蓝牙耳机推荐
- 几款好用的录屏软件推荐
- java导出excel弹出下载框_[Java教程]Springmvc和poi3.9导出excel并弹出下载框
- java注解保留两位小数_jackson使用@JsonSerialize格式化BigDecimal解决.00不显示问题
- 无极性电容的定义及应用
- FinClip程序员生活指南|如何“反脆弱”的过好一个低碳生活
- 2021年5月:百度最近的文章收录变慢了?连老站都不好使了?
- web安全所需过滤的特殊字符
- django基于Python的HOME宠物领养+购物商城中心小程序#毕业设计
- Cocos2d-x 2.0 变速动画深入分析
- not a genuine ST device,可能是个“假”芯片
- 斐波那契数列 牛客网 python
- 香港科大詹华强发明头发检测吸毒新技术
热门文章
- redhat Enterprise Linux Server release 7.2(Maipo) 安装redis-stat
- 硬件行业知识体系概要【转】
- 免费下载思科CCNP 642-861考试题库
- 3.28 将文字转换为路径并进行艺术再加工 [原创Ps教程]
- Worthington产气荚膜梭菌神经氨酸酶的特征及测定
- FCPX插件:分屏转场插件Stupid Raisins Shape Pop
- Ubuntu下Firefox无法打开localhost:5560/isqlplus解决办法
- mysql 设置为空_MySQL中可为空的字段设置为NULL还是NOT NULL
- DTVideo UE录屏插件使用说明
- 51信用卡的面试问题