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;
}
相关推荐
归去_来兮4 小时前
拉格朗日插值算法原理及简单示例
算法·数据分析·拉格朗日插值
千寻girling10 小时前
Python 是用来做 AI 人工智能 的 , 不适合开发 Web 网站 | 《Web框架》
人工智能·后端·算法
颜酱14 小时前
一步步实现字符串计算器:从「转整数」到「带括号与优化」
javascript·后端·算法
不想写代码的星星15 小时前
std::function 详解:用法、原理与现代 C++ 最佳实践
c++
CoovallyAIHub1 天前
语音AI Agent编排框架!Pipecat斩获10K+ Star,60+集成开箱即用,亚秒级对话延迟接近真人反应速度!
深度学习·算法·计算机视觉
木心月转码ing1 天前
Hot100-Day14-T33搜索旋转排序数组
算法
会员源码网2 天前
内存泄漏(如未关闭流、缓存无限增长)
算法
颜酱2 天前
从0到1实现LFU缓存:思路拆解+代码落地
javascript·后端·算法
颜酱2 天前
从0到1实现LRU缓存:思路拆解+代码落地
javascript·后端·算法