洛谷 P1762 偶数

           洛谷 P1762 偶数

题目描述

给定一个正整数n,请输出杨辉三角形前n行的偶数个数对1000003取模后的结果。

输入输出格式

输入格式:

一个数

输出格式:

结果

输入输出样例

输入样例#1:  
6
输出样例#1:  
6

说明

对于30%的数据,n<=4000

对于70%的数据,n<=4*10^9

对于100%的数据,n<=10^15

杨辉三角形的前七行:

1

1 1

1 2 1

1 3 3 1

 

1 4 6 4 1

 

1 5 10 10 5 1

 

1 6 15 20 15 6 1

题解:

#include<cstdio>
#include<iostream>
#define mo 1000003
using namespace std;
long long n,d,z,ans,a[55],b[55],v,p;
int i,t;
int main(){
    cin>>v;
    n=v;z=1;d=z<<50;
    t=50;
    while(n!=0){
        if(n>=d){
            n=n-d;
            a[++a[0]]=t;
        }
        d>>=1;
        t--;
    }
    b[0]=1;
    for(int i=1;i<=a[1];i++)b[i]=(b[i-1]*3)%mo;
    for(int i=1;i<=a[0];i++)ans+=b[a[i]]*(long long)(z<<i-1);
    p=(((z+v%mo)*(v%mo))/2);
    p%=mo;
    ans%=mo;
    if(p<ans)p+=mo;
    p=(p-ans)%mo;
    cout<<p;
    return 0;
}

 一世安宁

posted @ 2018-07-02 21:04  GTBA  阅读(194)  评论(0编辑  收藏  举报