首页 > 其他分享 >第九十八场周赛. AcWing 4948. 大乘积

第九十八场周赛. AcWing 4948. 大乘积

时间:2023-09-25 23:48:16浏览次数:36  
标签:周赛 10 非负 样例 4948 整数 输出 美丽 AcWing

第九十八场周赛. AcWing 4948. 大乘积

我们规定,如果一个非负整数 \(a\) 满足以下两个条件之一,则称 \(a\) 为美丽数:

  • \(a=0\)
  • \(a=10^x\),其中 \(x\) 为任意非负整数。

给定 \(n\)个非负整数 \(a_1,a_2,…,a_n\),这其中有至少 \(n−1\) 个数是美丽数。

请你计算并输出 \(a_1×a_2×…×a_n\) 的结果。

输入格式

第一行包含整数 \(n\)。

第二行包含 \(a_1,a_2,…,a_n\)。

输出格式

共一行,输出一个不含前导 \(0\) 的整数,表示 \(a_1×a_2×…×a_n\) 的结果。

数据范围

前 33 个测试点满足 \(1≤n≤5\)。
所有测试点满足 \(1≤n≤10^5\),\(a_1∼a_n\) 均为不含前导 \(0\) 的非负整数,并且这 \(n\) 个数的总长度不超过 \(10^5\)。

输入样例1:

3
5 10 1

输出样例1:

50

输入样例2:

4
1 1 10 11

输出样例2:

110

输入样例3:

5
0 3 1 100 1

输出样例3:

0
思路分析:n个数字总长度不超过10^5,很明显要使用字符串。每个数分为两类,美丽数和非美丽数字,首先写一个函数,判断它是否为美丽数,
如果它是美丽数,统计它的0的个数;如果它不是美丽数,就使用一个变量存起来(因为题目告诉最多只有一个非美丽数,可以这样操作)。依
次输入读入ai,如果ai为0直接输出0,不为0判断统计就行了,下面是代码。
代码:
#include<iostream>
using namespace std;
const int N = 100010;
//判断是否为美丽数,这里debug了很长时间
bool st(string s){
    if(s[0]!='1') return false; //如果第一位不是1,那么它必定不是美丽数
    for(int i=1;i<s.size();i++) //从第二位开始判断,如果不是0,那么它也不是美丽数
        if(s[i]!='0') return false;
    return true;
}
//统计美丽数有多少个0
int fc(string s){
    return s.size()-1;
}
int n,cnt;
string t,s;
int main(){
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>s;
        if(s=="0"){
            cout<<0;
            return 0;
        }else if(st(s)) cnt+=fc(s);
        else t=s;
    }
    //这里还需要特判一下,如果输入的全部是美丽数,t就为空
    if(t=="") t="1";
    cout<<t;
    while(cnt--) cout<<0;
    return 0;
}

标签:周赛,10,非负,样例,4948,整数,输出,美丽,AcWing
From: https://www.cnblogs.com/neko333/p/17729146.html

相关文章

  • AcWing 896. 最长上升子序列 II
    题目给定一个长度为$N$的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数$N$。第二行包含$N$个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围$1≤N≤100000,−10^9≤数列中的数≤10^9$输入样例:73121856输出样例......
  • 牛客周赛 Round 11
    https://ac.nowcoder.com/acm/contest/64593A题签到B题值得说得是对非降序的理解:非降序表示数组中的前一个数要<=下一个数C题也算dp,因为需要注意遍历顺序,计算的是所有子串的的权重,我们知道枚举所有子串需要\(O(n^2)\)的复杂度,按照本题数据范围显然不能\(O(n^3)\),我们只能在枚......
  • Acwing 周赛110 5046
    Acw5046思路dp,\(dp_i\)表示前i种药且吃第i种药使智商达到\(r_i\)的方案,根据题意可知\[dp_i=\sumdp_j,(r_j\in[l_i,r_i-1])\]先将各区间按右端点排序,求j的区间可用二分.代码//9.24intn,m,k;intf[N],s[N];//acw110structseg{ intl,r; booloperator<(c......
  • Acwing. 第122场周赛
    比赛链接A简单输出题目链接简单的模拟一下就好了,注意是多组样例就行。#include<bits/stdc++.h>usingnamespacestd;voidsolve(){intn;cin>>n;for(inti=1;i<=n;i++){cout<<i<<"";}cout<<endl;}intmain(){......
  • 容斥原理应用Acwing890借鉴题解
    参考文献简单的容斥原理介绍请看下图:C++代码简单的容斥原理介绍请看下图:本题思路:将题目所给出的m个数可以看成是m位的二进制数,例如当p[N]={2,3}时,此时会有01,10,11三种情况而二进制的第零位表示的是p[0]上面的数字2,第1位表示p[1]上面的数字3所以当i=1时表示只选择2的......
  • Acwing393. 雇佣收银员 题解 差分约束
    题目链接:https://www.acwing.com/problem/content/description/395/解题思路:差分约束。为了方便起见,定义第\(i\)个时间段为\(i-1:00\)到\(i:00\)这个时间段。首先,为了方便开一个额外的点,令\(R_i\)对应为题目中的\(R(i+1)\),即\(R_i\)表示\(i-1:00\)到\(i:00\)这......
  • Acwing 5220
    Acw5220题意自己看思路假设串N长度为\(n\),串H长度为\(m\),遍历串H,对于\([i,i+n-1]\)这一段子串,如果所含字母个数与串N所含字母个数相同,则认为匹配,问题在于如何判断排列重合的问题。字符串哈希。匹配的话直接将这一段的哈希值放入set中,去重,最后set的size就是答案代码const......
  • 牛客周赛 Round 12 D 小美的区间异或和
    Link首先这个题目的限制卡的很死,最好是O(n)解决,其次当看到异或的时候,就可以考虑按照二进制位进行计算。对于这个题,我们定义\(dp_i\)表示以\(a_i\)为最右端的子区间的答案的和那么首先可以想到,贡献给这个答案的有两个部分,包括\(a_i\)的和不包括的,其中不包括\(a_i\)的部分的答案......
  • LeetCode 周赛上分之旅 #46 经典二分答案与质因数分解
    ⭐️本文已收录到AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]和BaguTreePro知识星球提问。学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场LeetCode周赛的解题报告,一......
  • Acwing.第121场周赛
    Acwing.第121场周赛比赛链接这次怎么出的这么简单,偷懒了是吧哈哈哈A.简单计算题目链接#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;voidsolve(){inta,b,c;cin>>a>>b>>c;intans=(c-b)/a*a+b;cout<<ans<<endl;}......