首页 > 其他分享 >牛客周赛 Round 55

牛客周赛 Round 55

时间:2024-08-17 14:52:02浏览次数:15  
标签:10 55 x% 牛客 int ans Round dp mod

E

考虑 dp ,用 d p [ i ] [ j ] dp[i][j] dp[i][j] 来代表前 i i i 个数中乘积的个位为 j j j 的序列的个数。

#include<bits/stdc++.h>
#define endl '\n'
#define int long long

using namespace std;

const int maxn = 1e5+3;
const int mod = 1e9+7;
int dp[maxn][10]; // 前 i 个数乘积的个位数为 j 的序列的个数

int ksm(int a,int b)
{
    int ans=1;
    while(b)
    {
        if(b&1) ans=(ans*a)%mod;
        a=(a*a)%mod;
        b>>=1;
    }
    return ans;
}

void solve()
{
    int n; cin>>n;
    int x;
    int ans=0;
    for(int i=1;i<=n;i++)
    {
        cin>>x;
        x%=10;
        for(int j=0;j<=9;j++) // 计算前面的数对答案产生的贡献,此时 dp[i][j] 的数量只记录了含当前数的且对答案产生贡献的
        {
            dp[i][j*x%10]+=dp[i-1][j];
            dp[i][j*x%10]%=mod;
        }
        dp[i][x]++;
        ans+=ksm(2,n-i)*dp[i][6]; // 前缀产生的贡献
        ans%=mod;
        for(int j=0;j<=9;j++) // 把前面累计的答案转移过来
        {
            dp[i][j]+=dp[i-1][j];
            dp[i][j]%=mod;
        }
    }
    cout<<ans<<endl;
    return ;
}

signed main()
{
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int T; T=1;
    while(T--) solve();
    return 0;
}

标签:10,55,x%,牛客,int,ans,Round,dp,mod
From: https://blog.csdn.net/jinxdtaiy/article/details/141159634

相关文章

  • CF Round 966 Div3
    A给定一个字符串,判断是不是大于等于10210^2102的形式,例如......
  • 代码随想录算法训练营day09|151.翻转字符串里的单词,卡码网:55.右旋转字符串,28.实现 str
    151.翻转字符串里的单词题目链接:https://leetcode.cn/problems/reverse-words-in-a-string/description/暴力removeExtraSpaces:voidremoveExtraSpaces(string&s){for(inti=s.size()-1;i>0;i--){if(s[i]==''&&s[i]=......
  • Codeforces Round 894 (Div. 3) D
    题目:E.KolyaandMovieTheatre题目链接:https://codeforces.com/contest/1862/problem/E思路:主要用优先队列存放大于0的元素,然后除了第一个数据后的每m个数据就可以存放到记录数组里面,最后遍历找价值最大的点击查看代码#include<bits/stdc++.h>#defineintlonglongusing......
  • java 调用C#语言写的dll文件代码 jar包报错 : 类文件具有错误的版本 55.0, 应为 52.0
    [ERROR]Failedtoexecutegoalorg.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile(default-compile)onprojectsnowy-common:Compilationfailure[ERROR]/D:/ChengmaiDev/code/project-master/snowy-common/src/main/java/vip/xiaonuo/common/util/Commo......
  • 《1055:判断闰年》
    【题目描述】判断某年是否是闰年。如果公元a年是闰年输出Y,否则输出N。【输入】输入只有一行,包含一个整数a(0<a<3000)。【输出】一行,如果公元a年是闰年输出Y,否则输出N。【输入样例】2006【输出样例】N#include<iostream>usingnamespacestd;intmain(){......
  • BackgroundWorker和BlockingCollection配合实现有消息才发送的队列
    privateBackgroundWorkerm_MessageConsumer=newBackgroundWorker();privateBlockingCollection<string>m_BlockingQueue=newBlockingCollection<string>();构造函数{m_MessageConsumer.DoWork+=M_MessageConsumer_DoWork;m_MessageConsumer.Work......
  • 牛客周赛Round54(ABCDE)
     发布这些文章的目的很简单: 1.作者自己也是c++刚起手没多久的小白,深知自学一门学校不开设课程的语言的难处,(为了改错到处求人问路,看了好多没有真正帮助自己学习知识盲区,掌握新知识的教学视频,自己理解有偏差不能及时改正的困难)尽可能地帮助广大姐妹哥们儿们,我保证博文中的每......
  • 2024牛客暑期多校训练营10
    Preface最后一场牛客多校了,本来感觉可以来个完美谢幕的结果最后2h和祁神双开双卡本来开局就因为大雨导致晚开+浑身湿透,中间一直冷的发抖硬是撑了下来J题写法因为常数问题一直卡着十连重测;而C题因为有概率为\(0\)的情况需要繁琐的判断,最后两个题都没过赛后我用priority......
  • 2024.8.14 DP Round 2
    A.storeStatement:有\(n(1\len\le100)\)个果盘,其中第\(i\)个果盘有\(a_i\)个水果,容量是\(b_i(a_i\leb_i\le100)\)。一次操作可以将一个水果从一个果盘放到另一个果盘中,现在要将所有水果放到最少的盘子中,问最少要用多少盘子以及最少需要多少操作。Solution:第一......
  • Codeforces Round 966 (Div. 3) VP
    A.PrimaryTask枚举所有情况即可voidsolve(){ strings; cin>>s; if(s.substr(0,2)!="10"||s.size()<3||s[2]=='0'||(s.size()<4&&s[2]<'2')){ cout<<"NO\n"; } else{......