MoonLight的运算问题

简介: MoonLight的运算问题

MoonLight的运算问题


月色哥哥手中有一个数字 x,最初 x=0。


给出一个长度为 n的序列 a,月色哥哥会从序列的第一个元素 a1按顺序看到序列的最后一个元素 an。对于序列的第 i个元素 ai,月色哥哥可以进行下面的操作之一:


令 x=x⋅ai;

令 x=x+ai。


请求出 x 的最大值,并输出这个最大值除 998244353的余数。


输入描述:

第一行包含一个整数 T(1≤T≤105),表示测试用例的组数。


对于每组测试用例:


第一行包含一个整数 n(1≤n≤2⋅105),表示序列的长度。


第二行包含 n 个整数 a1…an(0≤ai≤109),表示该序列。


保证对于所有的测试用例,n 的总和不超过 2⋅105。

输出描述:

对于每组测试用例:


仅输出一行,包含一个整数,表示答案。

示例1


输入

3

2

1 1

1

0

1

998244353

输出

2

0

0

思路:每次操作,对于数x来说,大于1就乘,否则加,另外需加上一个条件,就是当初始值大于1之后,每次操作除0和1外都是乘


AC代码:


#include<bits/stdc++.h>
using namespace std;
#define p 998244353
int main()
{
     int t;
     cin>>t;
     while(t--)
     {
      int n;
      cin>>n;
      long long x,y=0,flag=0;
      for(int i=0;i<n;i++)
      {
        cin>>x;
            if(flag&&x>1)
            y*=x;
            else
            y+=x;
            if(y>1)
            flag=1;
            y%=p;
  }
  cout<<y<<endl;
  }
  return 0;
}

目录
相关文章
|
存储 数据处理
计算机数据的表示及运算
计算机数据的表示和运算是计算机系统中非常重要的概念。计算机使用二进制来表示和处理数据,其中包括整数、浮点数和字符等不同类型的数据。下面将详细介绍计算机数据的表示和运算。 1. 二进制表示:计算机使用二进制系统来表示数据。二进制系统由0和1两个数字组成,每一位称为一个比特(bit)。比特是计算机中最小的存储单位,可以表示一个二进制数值(0或1)。 2. 整数表示:计算机使用补码表示整数。补码是一种用于表示负数的方法,它将负数的最高位设为1,正数的最高位设为0。补码表示可以保证负数的运算结果仍然是有效的。 3. 浮点数表示:计算机使用浮点数表示实数。浮点数由两个部分组成:尾数和指数。尾数表示
190 0
|
25天前
|
Python
数值运算
数值运算。
27 4
|
7月前
|
计算机视觉
加法运算
【5月更文挑战第8天】加法运算。
135 4
|
7月前
|
机器学习/深度学习 存储 算法
位运算是一种什么运算方式
位运算是一种什么运算方式
49 1
|
存储 算法 数据处理
数据的表示及运算
一、数据的表示及运算 数据的表示和运算是计算机系统中非常重要的概念,它们决定了计算机如何处理和操作数据。 1. 数据的表示:计算机使用二进制(0和1)来表示和存储数据。二进制是一种只有两个状态的编码方式,可以通过开关电路的开和关来表示0和1。计算机将二进制编码与不同的数据类型关联,例如整数、浮点数、字符等。 2. 整数运算:计算机可以对整数进行基本的算术运算,包括加法、减法、乘法和除法。这些运算是通过电子电路中的逻辑门实现的,逻辑门可以对二进制数进行逻辑运算和移位操作。 3. 浮点数运算:计算机可以进行浮点数的运算,浮点数是一种用于表示带有小数部分的数值的数据类型。浮点数运算涉及到浮点数的表示
87 0
|
存储 C++
大整数运算(高精度运算)C/C++
大整数运算(高精度运算)C/C++
273 0
|
C语言
5.1.4_带符号整数的表示和运算_原反补
计算机组成原理之带符号整数的表示和运算_原反补
252 0
5.1.4_带符号整数的表示和运算_原反补
取余运算的使用
取余运算的使用
226 0
|
数据库
关系代数运算——除法运算
关系代数运算——除法运算
280 0
关系代数运算——除法运算