打表递推poj2081

来源:互联网 发布:阿里云slb负载均衡 编辑:程序博客网 时间:2024/05/22 20:01

 

题目连接:http://poj.org/problem?id=2081

题目解析:要看清题目在开始做题目,还有就是开的数组要足够的大;开两个数组,一个是打表用的,一个是用判断是不是出现过了,从而判断用哪个公式。

代码如下:

 

#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<iostream>using namespace std;#define PI 3.1415927bool f[5000000]={false};__int64 taotao[500005]={0};void yujuan(){__int64 i;taotao[0]=0;for(i=0;i<=500000;i++){         if(taotao[i-1]-i>0&&!f[ taotao[i-1]-i]){taotao[i]=taotao[i-1]-i;}elsetaotao[i]=taotao[i-1]+i;f[taotao[i]]=true;}}int main(){__int64 i,j,k,m,n,sum,min,max;yujuan();while(cin>>n){if(n==-1) break;cout<<taotao[n]<<endl;}return 0;}


原创粉丝点击