HDU 2114 계산 S(n)(수학 문제)(수학 공식)1^3+2^3+3^3+...+(n-1)^3+n^3=n^2(n+1)^2/4

2092 단어 수학.HDU
Calculate S(n)
Time Limit: 10000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 10014    Accepted Submission(s): 3628
Problem Description
Calculate S(n).
S(n)=1
3+2
3
 +3
3
 +......+n
3
 .
 
Input
Each line will contain one integer N(1 < n < 1000000000). Process to end of file.
 
Output
For each case, output the last four dights of S(N) in one line.
 
Sample Input

   
   
   
   
1 2

 
Sample Output

   
   
   
   
0001 0009

 
 이 문 제 는 시작 하 자마자 시간 이 걸 리 고 복잡 한 문제 이 고 수학 문제 오!
수학 공식://1^3+2^3+3^3+...+(n-1)^3+n^3=n^2(n+1)^2/4
추가://1^2+2^2+3^2+4^2+5^2..............................................................
그러나 수학 공식 으로 조심 하지 않 으 면(like me)N 번 떨 어 질 것 이다.제곱 의 한 걸음 을 마지막 으로 해 야 연산 을 최대한 간소화 하고 ac 를 할 수 있 기 때문이다.
메모:형식,long long 또는int 64 그렇지 않 으 면 메모리 가 터 집 니 다.
첫 번 째 종류:
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    __int64 n;
    while(~scanf("%I64d",&n))//1^3+2^3+3^3+……+(n-1)^3+n^3=n^2(n+1)^2/4
    {//1^2+2^2+3^2+4^2+5^2………………+n^2=n(n+1)(2n+1)/6
        __int64 ans;
        ans=n%10000;
        ans=ans*(n+1)%10000;
        ans/=2;
        printf("%04I64d
",ans*ans%10000); } return 0; }

두 번 째:
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    long long n;
    while(~scanf("%lld",&n))//1^3+2^3+3^3+……+(n-1)^3+n^3=n^2(n+1)^2/4
    {//1^2+2^2+3^2+4^2+5^2………………+n^2=n(n+1)(2n+1)/6
        long long ans;
        ans=n%10000*(n+1)%10000/2;
        ans=ans*ans%10000;
        printf("%04lld
",ans); } return 0; }

좋은 웹페이지 즐겨찾기