被3整除的子序列-组合数学+快速幂

被3整除的子序列

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 524288K,其他语言1048576K
64bit IO Format: %lld

题目描述

给你一个长度为50的数字串,问你有多少个子序列构成的数字可以被3整除
答案对1e9+7取模

输入描述:

输入一个字符串,由数字构成,长度小于等于50

输出描述:

输出一个整数

思路:先把字符串中所有字符%3,记录0,1,2 的个数,0的个数即直接记录,然后求1,2组合成3的个数。

#include
#include
#include
#include
using namespace std;
const int mod=1e9+7;
string str;
#define int long long
int arr[55];
bool vis[55];
long long ans=0;
int A[55][55];
void init(){
    for(int i=1;i<=50;i++){
        A[i][i]=1;
        A[i][1]=i;
    }
    for(int i=3;i<=50;i++){
        for(int j=2;j

 

你可能感兴趣的:(牛客网)