平方和求余

Posted 甜蜜蜜吖甜蜜蜜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了平方和求余相关的知识,希望对你有一定的参考价值。

2193: 校赛的纪念

Time Limit: 1 Sec  Memory Limit: 512 MB
Submit: 815  Solved: 154
[Submit][Status][BBS]

Description

作为成都东软学院的第一届个人校赛,这一天是我们ACM团队的所有成员所应该铭记的日子。而作为我们的总教练余大牛又想出了一个简单的问题作为对今日比赛的纪念,其实题目很简单,仅仅是计算平方和。但是,为了体现对今天的纪念,余大牛要求结果对20121215(今天的日期)取余。

例如:当n等于3时,ans=1^2+2^2+3^2=14

Input

 一个整数n ( 0 <= n <= 1000000)

注意:测试数据包含多个

Output

输出题目要求的结果

Sample Input

2
3

Sample Output

5
14

HINT

 有两种方法:
1:用平方和公式
技术分享
这样算然后直接求余,就可以避免一直重复的平方,一直算很大的数,可以节省很多时间,更要注意数字很大,要用longlong
#include <stdio.h>
int main()
{
    long long n,sum;
    while(scanf("%lld",&n)!=EOF)
    {
        sum=n*(n+1)*(2*n+1)/6;
        printf("%lld\n",sum%20121215);
    }
    return 0;
}
 
2:用余数定理
技术分享
这样可以避免很大的数对20121215取余产生错误,所以拆开来分别取余,但是这样比较浪费时间
 
#include <stdio.h>
int main()
{
    long long i,n,sum,ans;
    while(~scanf("%lld",&n))
    {
        sum = 0;
        for(i=1;i<=n;i++)
        {
            ans = i*i % 20121215;
            sum = (sum + ans)%20121215;

        }
        printf("%lld\n",sum);
    }
    return 0;
}

 

 

Source

以上是关于平方和求余的主要内容,如果未能解决你的问题,请参考以下文章

用穷举法找出1~100的质数并显示出来

C语言基础学习运算符-基本算术运算符

哈斯克尔。我很困惑这个代码片段是如何工作的

第十二届蓝桥杯大赛软件赛省赛第二场C++B组

MYsql的数学函数

java-运算符