首页 > 其他分享 >上海计算机学会11月月赛

上海计算机学会11月月赛

时间:2022-11-24 12:01:37浏览次数:40  
标签:11 10 计算机 积木 int 学会 leq 000 输出

上海计算机学会11月月赛

奇偶数的判定

题目描述

给定一个整数 n,若 n 是一个偶数,输出 even,若 n 是一个奇数,输出 odd。

输入格式

单个整数:表示 n。

输出格式

单个字符串:表示 n 的奇偶性

数据范围

\(-1,000,000\leq n\leq 1,000,000\)

样例数据

输入:

0

输出:

even

输入:

-1

输出:

odd

解题思路

直接取模即可。注意最好模2,因为负数的余数是负数,正数的余数是正数,0既不是正数也不是负数。

搭积木

题目描述

小爱同学想要用积木搭起一个金字塔。为了结构稳定,金字塔的每一层要比上一层多一块积木。即搭建规则如下:

金字塔的第 1 层需要放 1 块积木

金字塔的第 2 层需要放 2 块积木

金字塔的第 3 层需要放 3 块积木

…

金字塔的第 i 层需要放 i 块积木

现在小爱拿到了 n 块积木,请问他最高可以搭出多少层的金字塔?

输入格式

输入一个正整数 n,表示小爱手中的积木数量

输出格式

输出一个正整数,表示小爱最高能搭的金字塔层数

数据范围

对于 \(50\%\) 的数据,\(1 \leq n \leq 1,000\)
对于 \(100\%\) 的数据,\(1 \leq n \leq 1,000,000,000\)

样例数据

输入:

12

输出:

4

说明:
4层金字塔需要1+2+3+4=10块积木,而5层金字塔需要1+2+3+4+5=15块积木,所以小爱在有12块积木的情况下,最多搭4层金字塔

解题

循环求解即可

#include <bits/stdc++.h>
#define int long long
using namespace std;

signed main()
{
    int n;
    cin >> n;
    int sum = 0;
    int i = 0;
    while(sum < n)
    {
        i ++;
        sum += i;
    }
    cout << i - 1 << endl;
    return 0;
}

积木染色

题目描述

有 n 块积木排成一排,小爱需要给每块积木染色,颜色有 m 种,请问有多少种方法,能使相邻两块积木的颜色均不相同?

输入格式

输入两个正整数n,m

输出格式

输出满足条件的方案数模\(10^9+7\)的结果

数据范围

对于 30% 的数据,\(1≤n,m≤10\)
对于 60% 的数据,\(1≤n,m≤10 ^4\)

对于 \(100\%\) 的数据,\(1 \leq n \leq 10^{15},1 \leq m \leq 10^9\)

样例数据

输入:

3 2

输出:

2

说明:

合法的染色方案有:{1,2,1} {2,1,2}

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n;
    cin >> n;
    if(n == 0)
    {
        cout << "even"<< endl;
        return 0;
    }
    if(n % 2 == 0)
        cout << "even" << endl;
    else cout << "odd" << endl;
    return 0;
}

解题思路

排列组合题。主要是套快速幂模板.

//liziyu

#include <bits/stdc++.h>
#define int long long
using namespace std;

const int MOD = 1e9 + 7;

int f(int a , int m , int mod)
{
	if(m == 0)
		return 1;
	int t = f(a , (m - 1) / 2 , mod) % mod;
	if(m % 2 == 0)
		return (t * t) % mod;
	else
		return (((t * t) % mod) * a) % mod;   
}

signed main()
{
	int n , m;
	cin >> n >> m;
	cout << (m % MOD * (f(m - 1, n - 1 , MOD) % MOD)) % MOD <<endl;
	return 0;
}

出栈序列

题目描述

给定一个长度为n的、仅由小写字母组成的字符串,将其按序依次放入栈中。

请问在所有可能的出栈序列中,字典序最小的出栈序列是多少?

输入格式

输入第一行, 一个正整数n
输入第二行,一个长度为n的字符串

输出格式

输出所有出栈序列中,字典序最小的出栈序列

数据范围

对于\(30\%\)的数据,\(1 \leq n \leq 10\)
对于\(60\%\)的数据,\(1 \leq n \leq 10^3\)

对于\(100\%\)的数据,\(1 \leq n \leq 10^5\)

样例数据

输入:

3
yes

输出:

esy

说明:

字符y、e、s依次进栈,所有出栈的可能性有:
{yes}、{yse}、{eys}、{esy}、{sey}
其中 {esy} 的字典序最小

解题思路

其实这道题是一道贪心题。
当栈顶的元素比还可以进栈序列中的最小值大时,那么这是出栈得到的序列一定不是最小的。
所以只要用栈来模拟一遍即可。

#include <bits/stdc++.h>
using namespace std;

const int MAXN = 1E5 + 10;

stack<char> stk;
char a[MAXN] ;
int n;
string s;

int main()
{
	cin >> n >> s;
	a[n - 1] = s[n - 1];
	for(int i = n - 2 ; i >= 1 ; i --)
		if(s[i] < a[i - 1]) a[i] = s[i];
		else a[i] = a[i - 1];
	int cnt = 1;
	stk.push(s[0]);
	while(!stk.empty() || cnt < n)
	{
		if(stk.empty() || (cnt < n && stk.top() > a[cnt]))
			stk.push(s[cnt]) , cnt ++;
		else
		{
			cout << stk.top();
			stk.pop();
		}
	}
	cout << endl;
	return 0;
}

标签:11,10,计算机,积木,int,学会,leq,000,输出
From: https://www.cnblogs.com/liziyu0714/p/16908023.html

相关文章

  • jni错误分析之 Fatal signal 11 (SIGSEGV), code 1, fault addr 0x8 in tid 4420
    下面是具体错误2:08:06.7314420-4420/?A/libc:Fatalsignal11(SIGSEGV),code1,faultaddr0x8intid4420(com.tencent.mm)08-1402:08:06.8321393-1393/?I/DEB......
  • .NET周报【11月第3期 2022-11-22】
    国内文章.NETConfChina2022第一批讲师阵容大揭秘!整个期待了!https://mp.weixin.qq.com/s/4p89hhBPw6qv-0OB_T_TOg目光看过来2022年12月3-4日,一场社区性质的国内规模......
  • 「2022/11」学习记录
    「ARC090E」AvoidingCollision在一个有\(N\)个顶点和\(M\)条边的图上有两个人,分别在\(S\)号节点和\(T\)号节点。他们要各自走到对面(即在\(S\)的人走到\(T\),......
  • 【2022-11-22】世界杯节
    23:00面谀之词,有识者未必悦心;背后之议,受憾者常若刻骨。                                   ......
  • 【2022-11-23】世界杯具
    23:00能够把每一棵树、每一朵树下的小花儿都当成朋友的人,是真正快乐的人。                             ......
  • [leetcode每日一题]11.24
    ​​795.区间子数组个数​​给你一个整数数组 ​​nums​​ 和两个整数:​​left​​ 及 ​​right​​ 。找出 ​​nums​​ 中连续、非空且其中最大元素在范围 ​......
  • 如何诊断 11.2 集群节点驱逐问题 (文档 ID 1674872.1)
    一、适用于OracleDatabase-EnterpriseEdition-版本11.2.0.1到11.2.0.2[发行版11.2]本文档所含信息适用于所有平台二、用途这篇文档提供了诊断11.2集群节点......
  • 导轨安装DIN11 IPO OC系列模拟信号隔离放大器小体积单输入单输出单电源供电光电隔离转
    概述:导轨安装DIN11IPOOC系列模拟信号隔离放大器是一种将输入信号隔离放大、转换成按比例输出的直流信号混合集成厚模电路。产品广泛应用在电力、远程监控、仪器仪表、医疗......
  • day20221124今天学会了什么?
    day20221124周四学习方法:看文献学习,阅读。看视频学习,泡进代码。学呗,不会就问。手把手教。》工作技术最重要:今天计划做什么任务?今天学会了什么?做PPT》明天学会了什么......
  • Windows11右键改Win10
    Win11改Win10右键模式1.以管理员身份运行CMD控制台2.在控制台中输入下列代码后回车执行regadd"HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2......