HDU 2802 F(N) 数论+打表

题目大意:f[n]-n^3=f[n-2]-(n-1)^3 (n >=3),f[1]=1,f[2]=7,求f[n]。

题目思路:将n^3移到到等式右边化简的到:f[n]=f[n-2]+3n*(n-1)+1;

因为第n项与第n-2项有关,所以知道了f[1]与f[2]的值可以分奇偶打下表,找到循环节为4018。

#include<cstdio>
#include<stdio.h>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#define INF 0x3f3f3f3f
#define MAX 1000005
#define mod 1000000007 using namespace std; int v[MAX]; int main()
{
v[]=;
v[]=;
v[]=;
int n,ans,num;
for(n=;n<=;n++)//打表
{ if(n%==)
{
num=;//从4开始
ans=;
while(num<=n)
{
int k=(num-)/;
int a=(*num)%;
int b=(num-)%;
ans=(ans+((a*b)%+)%)%;
num+=;
}
ans=(ans+)%;
} else
{
num=;//从3开始
ans=;
while(num<=n)
{
int k=(num-)/;
int a=(*num)%;
int b=(num-)%;
ans=(ans+((a*b)%+)%)%;
num+=;
}
ans=(ans+)%;
}
v[n]=ans;
} while(scanf("%d",&n),n)
{
printf("%d\n",v[n%]);
}
return ;
}
上一篇:UI 滑动面板的移动控制


下一篇:cordova开发跨平台应用问题随笔记