1. 小美的外卖订单编号
题目链接
题目详情
美团商家的订单发起时,订单编号最开始从 1 开始,后续每发起一个订单,订单编号便在上一订单编号的基础上 +1。为了防止订单号过大,商家还可以设置一个编号上限m,当订单编号超过m时,将又从 1 开始编号。小美想知道,当订单编号上限为m时,第x个订单编号是多少?将有q次询问。
输入
第一行输入一个整数。 接下来q行,每行两个整数。
输出
q行,每行一个整数表示答案。
解题思路
这题很简单,其实就是做取余数操作。当x%m为0时,输出m即可,如:8%2 = 0,编号为4,输,4,如果x%m不为0,则输出余数即可,如,7%2=1,那么就输出1。
AC代码
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
#define int long long
#define endl '\n'
const int N = 25;
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int k;
cin >> k;
while (k--)
{
int x, m;
cin >> m >> x;
if(x%m==0)
{
cout<<m<<endl;
}
else
{
cout<<x%m<<endl;
}
}
return 0;
}
2. 小美的加法
题目链接
题目详情
小美有一个长度为n的数组,她想将这个数组进行求和,即。小美可以使用一次魔法(也可以不使用),将其中一个加号变成乘号,使得sum最大。求出最大的sum。
输入
第一行输入一个整数n。
第二行输入n个整数表示数组a。
输出
输出一个整数表示答案。
解题思路
这道题算是道思维题,其实并不难,只需要我们分析一下sum和最大sum的构成即可。最开始,sum就是a1加到an,然后我们要改变一个加号将其变为乘号,使得最后的sum值最大,这里我们首先会想到让相乘的这两个数的积最大,这一步我们可以用循环来找到 * 的位置;其次,最大的msum就等于原总和sum减去相乘的两个数a1,a2,再加上它们的积c,即为最终结果。
AC代码
#include<iostream>
#include<algorithm>
using namespace std;
#define int long long
#define endl '\n'
const int N = 100010;
int a[N];
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n,sum=0;
cin>>n;
for(int i=0;i<n;i++) cin>>a[i],sum+=a[i];
int a1=0,a2=0,c=0;
for(int j=0;j<n-1;j++)
{
if(a[j]*a[j+1]>c)
{
a1=a[j],a2=a[j+1];
c=a[j]*a[j+1];
}
}
cout<<sum+c-a1-a2;
return 0;
}