第二期训练白银组第二题

Sum Problem

Time limit 500 ms
Memory limit 262144 kB

Problem Description

wHAT DO WE NEED cAPS LOCK FOR?
Caps lock is a computer keyboard key. Pressing it sets an input mode in which typed letters are capital by default. If it is pressed by accident, it leads to accidents like the one we had in the first passage.
Let’s consider that a word has been typed with the Caps lock key accidentally switched on, if:
either it only contains uppercase letters;
or all letters except for the first one are uppercase.
In this case we should automatically change the case of all letters. For example, the case of the letters that form words “hELLO”, “HTTP”, “z” should be changed.
Write a program that applies the rule mentioned above. If the rule cannot be applied, the program should leave the word unchanged.

Input

The first line of the input data contains a word consisting of uppercase and lowercase Latin letters. The word’s length is from 1 to 100 characters, inclusive.

Output

Print the result of the given word’s processing.

Examples

Input

cAPS

Output

Caps

Input

Lock

Output

Lock

问题链接:CodeForces - 131A

问题简述:

输入字母,如果全是大写或者首字母是小写而其他为大写,则大写换小写,小写换大写,如果不是以上两种情况则不作处理。

问题分析:
定义字符串数组将字母当做字符串处理,通过分单个字母情况、全是大写情况、开头是小写其余是大写三种情况考虑,其他归为else直接输出不作处理
  
程序说明:

用strlen计算字符串的长度,通过长度分出单个字母和多个字母,处理完单个字母用goto语句直接截断调试避免后续else发生错误,多个字母再讨论全是大写情况、开头是小写其余是大写,其余直接else输出不作处理
  
AC通过的C语言程序如下:

#include <iostream>
using namespace std;

int main()
{
	char a[2000];
	cin >> a;
	int length;
	length = strlen(a);
	int sum = 0;
	if (length == 1)                          //单个字母情况
	{
		if ((a[0] >= 'a')&(a[0] <= 'z'))
		{
			a[0]=a[0]- 32;
			cout << a[0];goto L;
		}
		else 
		{
			a[0] = a[0] + 32;;
			cout << a[0]; goto L;
		}
	}
	
	 
		for (int i = 0;i < length;i++)
		{
			if ((a[i] >= 'A')&(a[i] <= 'Z'))
			{
				sum++;
			}
			if(sum==length)                     //全是大写情况
			{
				for (int j = 0;j < length;j++)
				{
					a[j] = a[j] + 32;
					cout << a[j];
				}
				goto L;
			}
		
		}
		if ((sum == (length - 1))&(a[0] >= 'a'&a[0] <= 'z'))         //开头字母是小写其余全是大写情况
		{
			a[0] = a[0] - 32;
			cout << a[0];
			for (int k = 1;k < length;k++)
			{
				a[k] = a[k] + 32;
				cout << a[k];
			}
		}
		else {
			for (int M = 0;M < length;M++)
			{
				cout << a[M];
			}
		}
	    

	
L:;
}
内容概要:本文档是关于基于Tecnomatix的废旧智能手机拆解产线建模与虚拟调试的毕业设计任务书。研究内容主要包括:分析废旧智能手机拆解工艺流程;学习并使用Tecnomatix软件搭建拆解产线的三维模型,包括设备、输送装置等;进行虚拟调试以模拟各种故障情况,并对结果进行分析提出优化建议。研究周期为16周,涵盖了文献调研、拆解实验、软件学习、建模、调试和论文撰写等阶段。文中还提供了Python代码来模拟部分关键流程,如拆解顺序分析、产线布局设计、虚拟调试过程、故障模拟与分析等,并实现了结果的可视化展示。 适合人群:本任务书适用于机械工程、工业自动化及相关专业的本科毕业生,尤其是那些对智能制造、生产线优化及虚拟调试感兴趣的学生。 使用场景及目标:①帮助学生掌握Tecnomatix软件的应用技能;②通过实际项目锻炼学生的系统建模和虚拟调试能力;③培养学生解决复杂工程问的能力,提高其对废旧电子产品回收再利用的认识和技术水平;④为后续的研究或工作打下坚实的基础,比如从事智能工厂规划、生产线设计与优化等工作。 其他说明:虽然文中提供了部分Python代码用于模拟关键流程,但完整的产线建模仍需借助Tecnomatix商业软件完成。此外,为了更好地理解和应用这些内容,建议学生具备一定的编程基础(如Python),并熟悉相关领域的基础知识。
内容概要:本文档《Kotlin语言教程&案例之基础入门与核心应用》深入介绍了Kotlin这一现代编程语言的关键概念、核心技巧、应用场景及未来发展趋势。文档首先解析了Kotlin的核心概念,如空全机制、扩展函数、数据类和协程等,强调了其简洁性、全性和与Java的无缝交互。其次,通过类型推断和lambda表达式的实战讲解,展示了提升编程效率的方法。文档还列举了Kotlin在Android开发、后端服务、桌面应用和跨平台开发中的具体应用实例,特别是通过用户信息管理系统的代码案例,详细分析了数据类定义、扩展函数实现、协程处理异步查询以及密封类与when表达式的使用。最后展望了Kotlin的未来发展,包括多平台开发、与AI工具的集成以及在数据科学领域的潜力。; 适合人群:对编程有一定了解,尤其是对Java有基础,希望转向或深入了解Kotlin的开发者,以及对跨平台开发感兴趣的程序员。; 使用场景及目标:①学习Kotlin的核心概念,如空全、扩展函数、数据类和协程等;②掌握提高编程效率的技巧,如类型推断和lambda表达式的使用;③理解Kotlin在不同应用场景下的实战案例,如Android开发、后端服务等;④探索Kotlin的未来发展方向,如多平台开发和与AI工具的集成。; 阅读建议:此资源不仅涵盖了Kotlin的基础理论,还包括大量实战案例,因此在学习过程中应结合实际代码进行练习,特别关注代码中的注释和逻辑,以便更好地理解和掌握Kotlin的特性和优势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值