lightoj 1024 (高精度乘单精度)】的更多相关文章

题意:给你一些数,求它们的最小公倍数,结果可能会很大. 统计出每个素因子出现的最大次数,把他们相乘即可,需要高精度. #include<cmath> #include<cstdio> #include<cstring> #include<iostream> using namespace std; const int MAXN = 100010; int ans[MAXN], cnt[MAXN], len; void multiply(int fact){…
题目链接:http://lightoj.com/volume_showproblem.php?problem=1024 题意:给你n(2<=n<=1000)个数, 然后求n个数的最小公倍数,每个数的大小是1---10000;所以答案会很大,可能达到1000个4位数相乘:所以结果很大,将近4000位; 所以一定会涉及到高精度运算:同时我们也不能直接循环求最小公倍数:我们可以把一个数分解成多个质数相乘,然后找到所有数中,出现的质数最多的那个对应的次方,然后再把结果乘起来即可; 例如样例 4 5 6…
题目链接:https://vjudge.net/contest/28079#problem/T 题目大意:给你n个数求这些数的最小公倍数(约数). 解题思路:还太菜了,看了别人的题解才会写,转自这里,每个数的大小是1~10000,且有2~1000个数,可能达到1000个4位数相乘,所以结果很大,将近4000位.所以要使用高精度计算,而且不能直接按照我们平时计算最小公倍数的算法(循环过来),因为数字太大,所以要改变思路,我们可以把一个数进行素因数分解,然后找到所有分解出来的素数对应的最大次数,然后…
求n个数的最小公倍数. import java.math.*; import java.io.*; import java.util.*; import java.text.*; public class Main{ /** * @param args */ public static BigInteger lcm(BigInteger a,BigInteger b){ return a.divide(a.gcd(b)).multiply(b);//.divide(a.gcd(b)); } pu…
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1876 分析: 以为辗转相减会TLE呢……但是好像没这个数据……就这么水过去了…… 辗转相减求a,b的gcd其实可以优化的: 1.若a为偶数,b为奇数:gcd(a,b)=gcd(a/2,b) 2.若a为奇数,b为偶数:gcd(a,b)=gcd(a,b/2) 3.若a,b都是偶数:gcd(a,b)=2*gcd(a/2,b/2) 3.若a,b都是奇数:gcd(a,b)=gcd(a-b,b)…
题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1789 题目大意: 求大卡特兰数..公式如下.输入n求Sn(n<=5000) 题目思路: [高精度] Sn=Cn+1.直接压四位高精度算一遍就好.只要写高精度乘单精度,高精度除单精度. // //by coolxxx //#include<bits/stdc++.h> #include<iostream> #include<algorithm> #inc…
用递推的方式写的写挂了,而如果用组合数又不会高精度除法,偶然看到了别人的只用高精度乘低精度求组合数的方法,记录一下 #include<bits/stdc++.h> using namespace std; const int maxn=60010; const long long M=1000000000; typedef long long LL; LL num[maxn]; int cnt[maxn*2];//记录素数因子的个数 int len=1; void get_cnt(int x,…
ACM-高精度模板(综合篇) 时间:-- :: 阅读: 评论: 收藏: [点我收藏+] 标签:高精度 在这里,我们约定,能用int表示的数据视为单精度,否则为高精度.所有函数的设计均采用带返回值的形式. 本文包含 .高精度加法 .高精度减法 .高精度乘法 )高精度乘高精度的朴素算法 )高精度乘高精度FFT优化算法 )高精度乘单精度 .高精度除法 )高精度除高精度 )高精度除单精度 .高精度取模 )高精度对高精度取模 )高精度对单精度取模 .高精度阶乘 .高精度幂 .高精度GCD .高精度进制转换…
  题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右 手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排 成一排,国王站在队伍的最前面.排好队后,所有的大臣都会获得国王奖赏的若干金币,每 位大臣获得的金币数分别是:排在该大臣前面的所有人的左手上的数的乘积除以他自己右 手上的数,然后向下取整得到的结果. 国王不希望某一个大臣获得特别多的奖赏,所以他想请你帮他重新安排一下队伍的顺序, 使得获得奖赏最多的大臣,所获奖赏尽可能…
第一题: 题目大意: 求由N个1,M个0组成的排列的个数,要求在排列的任意一个前缀中,1的个数不少于0的个数.N,M<=5000. 解题过程: 1.看到N,M的范围就明确肯定不会是dp,因为起码要用二维表示状态,就算转移是O(1),也要5000*5000的时间,况且还要高精度,绝对超时. 2.于是想到可以根据Catalan数的推导方法来推出公式. ps:Catalan数的推导方法和一些应用可以参考我之前的博文中的问题二http://www.cnblogs.com/vb4896/p/3874622…