A. Number Theory Problem

题目大意:计算小于2^n,且满足2^k-1并且是7的倍数的个数

思路:优先打表,数据不大,1e5,然后求个前n项和

#include
using namespace std;
const int N=1E5+1;
int arr[N];

void inint(int x){
    int t=1;
    for(int i=1;i<=x;i++){
        t<<=1;
        t%=7;
        if(t==1) arr[i]=1;
    }
    
    for(int i=1;i<=x;i++)     arr[i]=arr[i]+arr[i-1];
}

void solve(int xx){
    int n;
    cin>>n;
    printf("Case #%d: %d\n",xx,arr[n]);
}
int main(){
    inint(N);
    int n;
    cin>>n;
    for(int i=1;i<=n;i++) solve(i);
    return 0;
}

 

你可能感兴趣的:(A. Number Theory Problem)