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;
}
相关推荐
不去幼儿园7 分钟前
【MARL】深入理解多智能体近端策略优化(MAPPO)算法与调参
人工智能·python·算法·机器学习·强化学习
Mr_Xuhhh8 分钟前
重生之我在学环境变量
linux·运维·服务器·前端·chrome·算法
Ajiang28247353041 小时前
对于C++中stack和queue的认识以及priority_queue的模拟实现
开发语言·c++
盼海1 小时前
排序算法(五)--归并排序
数据结构·算法·排序算法
幽兰的天空1 小时前
Python 中的模式匹配:深入了解 match 语句
开发语言·python
Theodore_10224 小时前
4 设计模式原则之接口隔离原则
java·开发语言·设计模式·java-ee·接口隔离原则·javaee
网易独家音乐人Mike Zhou5 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot
‘’林花谢了春红‘’6 小时前
C++ list (链表)容器
c++·链表·list
----云烟----6 小时前
QT中QString类的各种使用
开发语言·qt
lsx2024066 小时前
SQL SELECT 语句:基础与进阶应用
开发语言