P1045】的更多相关文章

问题 A: P1045 时间限制: 1 Sec  内存限制: 128 MB提交: 145  解决: 127[提交][状态][讨论版] 题目描述 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大.因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号.例如: N=5,  K=2,5个数字分别为1.2.3.4.5,可以加成: 1*2*(3+4+5)=24 1*(2+3)*(4+5)=45 (1*2+3)*(4+5)…
题目链接 https://www.luogu.org/problemnew/show/P1045 题目大意 本题目的主要意思就是给定一个p,求2p-1的位数和后500位数. 解题思路 首先看一下数据范围,我们不难发现此题必须要用高精度来做.但是每一次高精度乘法的复杂度是o(n)的(n为数字的位数),所以很显然需要加一个快速幂.但是事实证明快速幂+高精度也会超时,所以我们必须进一步优化时间. 根据题意,我们可知,只需要记录下后500位数即可,这里牵扯到一点点数论的知识,这一个数字的后500位是与5…
P1045麦森数 #include<iostream> #include <cmath> #include <cstring> const int maxn = 1e5 + 10; #define int long long using namespace std; //第一个表示位数,之后的数字表示每个位数上的数 int ans[maxn] = {1, 1}, k[maxn] = {1, 2}, c[maxn]; void muti(int a[], int b[])…
P1045 快速排序 转跳点:…
描述 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大.因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号.例如:N=5, K=2,5个数字分别为1.2.3.4.5,可以加成:1*2*(3+4+5)=241*(2+3)*(4+5)=45(1*2+3)*(4+5)=45…… 输入格式 输入文件共有二行,第一行为两个有空格隔开的整数,表示N和K,其中(2<=N<=15, 0<=K<=N-1).第二…
别问我为什么要写水题 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using namespace std; typedef long long ll; const int N = 505; struct meow { int a[N], n; int& operator [](int x) {r…
洛谷试炼场-简单数学问题 B--P1045 麦森数 Description 形如2^P−1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果PP是个素数,2^P-1 不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=3021377P=3021377,它有909526位.麦森数有许多重要应用,它与完全数密切相关. 任务:从文件中输入PP(1000<P<31000001000<P<3100000),计算2^P-1 的位数和最后500位数字(用十进制高…
不用快速幂,压位出奇迹! 本人是个蒟蒻,不太熟悉快速幂,这里给大家介绍一种压位大法. 让我们来分析一下题目,第一位是送分的,有一个专门求位数的函数:n*log10(2)+1. 然后题目中p<=3100000,又要求后500位,普通算法肯定超时,但如果我们多压几位甚至时间都比普通快速幂少.而且我们用 long long 的话可以一次就乘上2的20次方又能节省时间: 第一问: s=n*log10(2)+1;用函数算位数 cout<<s<<endl; 第二问:算后500位: whi…
题目描述 形如2^{P}-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2^{P}-1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=3021377,它有909526位.麦森数有许多重要应用,它与完全数密切相关. 任务:从文件中输入P(1000<P<3100000),计算2^{P}-1的位数和最后500位数字(用十进制高精度数表示) 输入输出格式 输入格式: 文件中只包含一个整数P(1000<P<3100000) 输出格式:…
题目描述 形如2^{P}-12 ​P ​​ −1的素数称为麦森数,这时PP一定也是个素数.但反过来不一定,即如果PP是个素数,2^{P}-12 ​P ​​ −1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=3021377P=3021377,它有909526位.麦森数有许多重要应用,它与完全数密切相关. 任务:从文件中输入PP(1000 #include<iostream> #include<cmath> #include<cstdio> #i…
这道题太精彩了! 我一开始想直接一波暴力算,然后叫上去只有50分,50分超时 然后我改成万位制提高运算效率,还是只有50分 然后我丧心病狂开long long用10的10次方作为一位,也就是100亿进制 去做,然后交上去多过了一个点,60分 附上丧心病狂的代码 #include<cstdio> #include<cctype> #include<algorithm> #define REP(i, a, b) for(int i = (a); i < (b); i+…
题目描述 给出若干个整数,询问其中是否有一对数的和等于给定的数. 输入格式 共三行: 第一行是整数 \(n(0 \lt n \le 100000)\) ,表示有 \(n\) 个整数. 第二行是n个整数.整数的范围是在 \(0\) 到 \(10^8\) 之间. 第三行是一个整数 \(m(0 \le m \le 2^{30})\) ,表示需要得到的和. 输出格式 若存在和为m的数对,输出两个整数,小的在前,大的在后,中间用单个空格隔开.若有多个数对满足条件,选择数对中较小的数更小的.若找不到符合要求…
题目 题目描述 形如2^P-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2^P-1 不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=3021377,它有909526位.麦森数有许多重要应用,它与完全数密切相关. 任务:从文件中输入P(1000<P<3100000),计算2^P-1的位数和最后500位数字(用十进制高精度数表示) 输入格式 文件中只包含一个整数P(1000<P<3100000) 输出格式 第一行:十进制高精度数…
描述: \(计算2^{P}−1的位数和最后500位数字(用十进制高精度数表示)\) Ⅰ.求位数 \(因为2^p最后一位必定不为0,求2^p-1的位数也就是求2^p位数\) \(2^p的位数确实很难求,但10^p我们是知道的,位数等于p+1\) \(为此我们可以采用换底公式,2=10的log10(2)次方\) \(所以答案就是求(int)(log10(2)*p+1))\) 接下来就是高精度快速幂了,只需要用每次的最后500位做乘法就好了 #include <bits/stdc++.h> usin…
题目描述 形如2^P−1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2^P−1不一定也是素数. 到1998年底,人们已找到了37个麦森数.最大的一个是P=3021377,它有909526位.麦森数有许多重要应用,它与完全数密切相关. 任务:从文件中输入P(1000<P<3100000),计算2^P−1的位数和最后500位数字(用十进制高精度数表示) 输入格式 文件中只包含一个整数P(1000<P<3100000) 输出格式 第一行:十进制高精度数2^P…
有两个问题:求位数和求后500位的数. 求位数:最后减去1对答案的位数是不影响的,就是求2p的位数,直接有公式log10(2)*p+1; 求后500位的数:容易想到快速幂和高精度: 1 #include<bits/stdc++.h> 2 using namespace std; 3 int p,f[1001],/*基数*/res[1001],/*记录答案*/sav[1001]/*中间数组*/; 4 5 void work_1(){//记录答案 6 memset(sav,0,sizeof(sav…
entity framework6.x之前搞了这么多版本,构架这么牛B,居然没有批量插入更新的功能,但有很多替换的解决方案,例如Entity Framework Extended Library(https://github.com/loresoft/EntityFramework.Extended).手工拼接sql语句. 现在微软正在推出core版的ef,它号称比6.x更加轻量级和高效,今天试一下了一下它的批量插入,感觉不错 C#源码: public class BloggingContext…
PJ考试可能会用到的数学思维题选讲 by Pleiades_Antares 是学弟学妹的讲义--然后一部分题目是我弄的一部分来源于洛谷用户@ 普及组的一些数学思维题,所以可能有点菜咯别怪我 OI中的数学题--你会你就能做,不会做就是真的做不出来QAQ 鲁迅曾说:一入数学深似海,从此AC是路人. 一些会说到的题目:(都是洛谷编号) 这些题目全都是原来NOIP考过的真题喔 1010 1014 1029 1035 1045 1075 1012 1351 2119 ok咱们开始说 第一题,洛谷P1010…
P1044 谭浩强C语言(第三版)习题5.8 import java.util.*; import java.io.*; import java.math.BigInteger; public class Main { public static void main(String args[]) { Scanner cin=new Scanner(System.in); int x=cin.nextInt(),ans=0; int[] thres={100000,100000,200000,20…
[题目描述] 形如2P-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2P-1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=3021377,它有909526位.麦森数有许多重要应用,它与完全数密切相关. 任务:输入P(1000<P<3100000),计算2P-1的位数和最后500位数字(用十进制高精度数表示) [输入] 只包含一个整数P(1000<P<3100000) [输出] 第一行:十进制高精度数2P-1的位数. 第2-…
题目链接:https://www.luogu.org/problemnew/show/P1045 题意:给定p(1000<p<3100000),求2^p-1的位数和最后500位(若不足高位补零). 思路:首先,2^p-1和2^p有相同的位数,因为2^p末位一定不为0.所以2^p-1的位数为log10(2^p)+1,即p*log10(2)+1. 手写快速幂计算2^p,并对Mod=10^500取模,计算结果减一之后注意判断是否为负,若为负,则加上模数,之后将BigInteger转字符串输出即可.…
A+B and A*B problem 大数相加 相乘 模拟 题意 给你两个数a和b,这两个数很大,然后输出这两个数相加的和,相乘的积. 解题思路 模拟,但是还是搜了搜代码实现,发现这个大佬写的是真的简洁高效. 下面第一个代码转自博客(修改了一些) >>>https://blog.csdn.net/hacker00011000/article/details/51298294 第二个代码是CZH同学的代码,代码更是简单易懂! 别的一些思路 大数相加相乘 https://blog.csdn…
题目涉及算法: 乒乓球:简单字符串模拟: 数字游戏:区间DP: 栈:卡特兰数 麦森数:高精度.快速幂.数学. 乒乓球 题目链接:https://www.luogu.org/problem/P1042 这道题目是一道较为繁琐的字符串模拟,有点烦但是并不难. 我的代码的思想是将到'E'为止的输入全部存到一个字符串中,然后遍历字符串,用win_point来存放赢的分数,用lose_point来存放对手赢的分数,如果满足条件 (win_point>=11 || lose_point>=11) &…