poj1338--poj2545--poj2591--打表

2024-06-12 12:18
文章标签 打表 poj1338 poj2545 poj2591

本文主要是介绍poj1338--poj2545--poj2591--打表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://poj.org/problem?id=1338

http://poj.org/problem?id=2545

http://poj.org/problem?id=2591

三道水题~~~~题目链接在上:


题意很容易理解,解法需要想一想,


即通过维护三个队列,来产生一个带有ans到数组。


以下是代码:

poj1338:

#include <cstdio>
#include <algorithm>
using namespace std;
const int maxnum=1500;
int a[1500]={1};
int main()
{int m=1,n,i=0,j=0,k=0;for(;m<maxnum;){a[m++]=min(a[i]*2,min(a[j]*3,a[k]*5));if(a[m-1]==a[i]*2) ++i;if(a[m-1]==a[j]*3) ++j;if(a[m-1]==a[k]*5) ++k;}while(~scanf("%d",&n),n)printf("%d\n",a[n-1]);return 0;
}

poj2545:

#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;ll a[10000100]={1};
int main()
{ll p1,p2,p3,m;while(cin>>p1>>p2>>p3>>m){int i=0,j=0,k=0,n;for(n=1;n<=m;){a[n++]=min(a[i]*p1,min(a[j]*p2,a[k]*p3));if(a[n-1]==a[i]*p1) ++i;if(a[n-1]==a[j]*p2) ++j;if(a[n-1]==a[k]*p3) ++k;}cout<<a[n-1]<<endl;}return 0;
}

poj2591:

#include <cstdio>
using namespace std;
const int maxnum=10000100;
int a[maxnum]={1};
int main()
{int *x1=a,*x2=a,i;int temp1,temp2;for(i=1;i<maxnum;){temp1=2**x1+1,temp2=3**x2+1;if(temp1<temp2) a[i++]=temp1,x1++;else if(temp1>temp2) a[i++]=temp2,x2++;else a[i++]=temp1,x1++,x2++;}int n;while(~scanf("%d",&n))printf("%d\n",a[n-1]);return 0;
}



这篇关于poj1338--poj2545--poj2591--打表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1054189

相关文章

uva 568 Just the Facts(n!打表递推)

题意是求n!的末尾第一个不为0的数字。 不用大数,特别的处理。 代码: #include <stdio.h>const int maxn = 10000 + 1;int f[maxn];int main(){#ifdef LOCALfreopen("in.txt", "r", stdin);#endif // LOCALf[0] = 1;for (int i = 1; i <=

uva 10916 Factstone Benchmark(打表)

题意是求 k ! <= 2 ^ n ,的最小k。 由于n比较大,大到 2 ^ 20 次方,所以 2 ^ 2 ^ 20比较难算,所以做一些基础的数学变换。 对不等式两边同时取log2,得: log2(k ! ) <=  log2(2 ^ n)= n,即:log2(1) + log2(2) + log2 (3) + log2(4) + ... + log2(k) <= n ,其中 n 为 2 ^

计蒜客 Half-consecutive Numbers 暴力打表找规律

The numbers 11, 33, 66, 1010, 1515, 2121, 2828, 3636, 4545 and t_i=\frac{1}{2}i(i+1)t​i​​=​2​​1​​i(i+1), are called half-consecutive. For given NN, find the smallest rr which is no smaller than NN

高精度打表-Factoring Large Numbers

求斐波那契数,不打表的话会超时,打表的话普通的高精度开不出来那么大的数组,不如一个int存8位,特殊处理一下,具体看代码 #include<stdio.h>#include<string.h>#define MAX_SIZE 5005#define LEN 150#define to 100000000/*一个int存8位*/int num[MAX_SIZE][LEN];void

偶-素数打表

A - 高效素数打表 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit  Status Description 哥德巴赫猜想大家都知道一点吧.我们现在不是想证明这个结论,而是想在程序语言内部能够表示的数集中,任意取出一个偶数,来寻找两个素数,使得其和等于该偶

hdu1407 测试你是否和LTC水平一样高(数学:打表)

受之前做的几道题影响,第一反应就是打表 但我之前打表是三重循环从小到大遍历,这样就很有问题了 比如输入201,对应结果应该为1, 2, 14 但我的方法输出结果为4, 8, 11 很难设置判别条件使得输出结果最小 于是想到了从大到小遍历 但是用打表这个题有问题,就是给的数据并不在10000以内 我开数组开到17000还是错 开到20000才过,用时0ms 代码如下: #in

poj 3090 Visible Lattice Points(数论:筛法打表欧拉函数)

和之前做过的一个题很像 对于size==4 从1到4考虑y坐标 不妨设x>=y y==1: (1,1) y==2: (1,2) y==3: (1, 3) (2, 3) y==4: (1, 4) (3, 4) 共6个满足条件,把x y交换下且去除(1, 1)的重复情况得到2×6-1=11 再加上(0,1) (1,0)两种情况得到13 所以结果应该为: 代码如下: #

poj 2478 Farey Sequence(数论:欧拉函数+打表)

注意括号内分数分母相同时的区别 f(5)中以5为分母的数其分子均与5互质 进而推得:f(n)中以i为分母的数其各个分子均与i互质 因此: 用筛选法打表phi,再预处理下即可 看到别人说也可以用欧拉函数的积性性质来做,有兴趣的可以看一下 我的代码如下: #include <stdio.h>#define MAXN 1001000#define LL long longLL ph

hdu 1715 大菲波数(高精度加法+打表 + 斐波那契数)

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1715 题目大意:求第N个菲波数  f(x) = f(x - 1) + f(x - 2). 解题思路:因为要求到第1000个,所以非常数值非常大,得用高精度做。题目已经确定1000个了,可以打表,以防超时。 模板连接:http://blog.csdn.net/keshuai1

理论知识.质数打表

啊,哈喽,小伙伴们大家好。我是#张亿,今天呐,学的是理论知识.质数打表 为什么需要质数打表 我们已经学习了如何判断一个数是不是质数了,但是还不够。假设要判断很多很多个数是不是质数的时候,之前的学习的方法效率不够高。因为,如果 n 是质数,需要从 2 枚举到 sqrt(n) ,如果题目里面要你几百几千个数逐一判断是否是质数,则很可能会超时。 所谓 质数打表,是指先通过一段比较高效的代码,完成了