GalaxyOJ-721 (公式)

来源:互联网 发布:mysql查询分析器 编辑:程序博客网 时间:2024/06/05 00:29

题目

Problem Description

给出一个大小为2n的集合X={1,2,3,…,2n-1,2n},问该集合中有趣子集的数目,答案mod1e9+7。
x的有趣子集定义为,该子集中至少有两个数,a和b,b是a的倍数且a是集合中最小的元素。

Input

输入一个整数n
1<=n<=1000

Output

输出子集数目mod1e9+7的结果

Sample Input

3
Sample Output
47

分析

  • 可以直接推出公式(见程序)

程序

#include <cstdio>#define Ha 1000000007int ans,n,N;long long he(int x,int y){    long long ans=1,k=x;    for (; y; y>>=1,k=(k*k)%Ha) if (y&1) ans=(ans*k)%Ha;    return ans;}int main(){    scanf("%d",&n);    N=n+n;    for (int a=1; a<=n; a++){        int k=N-a-1;        for (int b=a+a; b<=N; b+=a,k--){            ans+=he(2,k);            ans%=Ha;        }    }    printf("%d",ans);}
原创粉丝点击