您的位置:首页 > 其它

UVa 11401

2016-07-29 15:57 337 查看
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>

using namespace std;

int n;
long long f[1000010];

int main()
{
f[3]=0;
for(long long x=4;x<=1000000;x++)
f[x]=f[x-1]+((x-1)*(x-2)/2-(x-1)/2)/2;
while(scanf("%d",&n)!=EOF)
{
if(n<3)
break;
cout<<f
<<endl;
}
return 0;
}

这是书上的一个数论题,还算是简单,但是我感觉书上的分析得出的公式还是有点复杂的,其实大体按照书上的格式分析来,在特别求解c(x)的函数的时候,自己来自己分析得到的公式则更加的简单易行。

下面是我自己的代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>

using namespace std;

int n;
long long f[1000010];

int main()
{
f[3]=0;
for(long long x=4;x<=1000000;x++)
{
if(x%2!=0)
f[x]=f[x-1]+(x-3)*(x-1)/4;
else
f[x]=f[x-1]+(x-2)*(x-2)/4;
}
while(scanf("%d",&n)!=EOF)
{
if(n<3)
break;
cout<<f
<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: