E-小红的序列乘积2.0(牛客周赛55)

E-小红的序列乘积2.0

题意:给定数组a,求子序列前缀积个位数为6的数字个数。

分析:只要算个位数是否为6,所以把a数组都换成个位数上的数就好了。用a数组与1到9的数字进行组合,用组合数学算出组合数。

代码:

复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
ll qpow2(ll a,ll b,ll p){
    ll base=a;
    ll res=1;
    while(b){
            if(b&1)res=(res*base)%p;
            base=(base*base)%p;
            b>>=1;
    }
    return res;
}
​
int main(){
    int n;cin>>n;
    ll a[n+10];ll ans=0;
    ll mp[100],mp2[100];
    for(int i=1;i<=n;i++){
        cin>>a[i];
        a[i]%=10;
    }
    memset(mp,0,sizeof(mp));
    mp[1]=1;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=9;j++)mp2[j]=0;
        for(int j=1;j<=9;j++){
            int c=a[i]*j%10;
            if(c==6){
                ans+=mp[j]*qpow2(2,n-i,mod);
                cout<<i<<" "<<mp[j]<<endl;
                ans%=mod;
            }
            mp2[c]+=mp[j];mp2[c]%=mod;
        }
        for(int j=1;j<=9;j++){
            mp[j]+=mp2[j];mp[j]%=mod;
        }
    }
    cout<<ans<<endl;
    return 0;
}
相关推荐
小糖学代码2 小时前
LLM系列:1.python入门:15.JSON 数据处理与操作
开发语言·python·json·aigc
handler012 小时前
从源码到二进制:深度拆解 Linux 下 C 程序的编译与链接全流程
linux·c语言·开发语言·c++·笔记·学习
小白学大数据2 小时前
现代Python爬虫开发范式:基于Asyncio的高可用架构实战
开发语言·爬虫·python·架构
渔舟小调3 小时前
P19 | 前端加密通信层 pikachuNetwork.js 完整实现
开发语言·前端·javascript
不爱吃炸鸡柳3 小时前
数据结构精讲:树 → 二叉树 → 堆 从入门到实战
开发语言·数据结构
网络安全许木3 小时前
自学渗透测试第21天(基础命令复盘与DVWA熟悉)
开发语言·网络安全·渗透测试·php
t***5443 小时前
如何在Dev-C++中使用Clang编译器
开发语言·c++
码界筑梦坊3 小时前
93-基于Python的中药药材数据可视化分析系统
开发语言·python·信息可视化
Qbw20043 小时前
【Linux】进程地址空间
linux·c++