本地小黑板,学习不迷路

禁鼠标点击
禁复制
禁剪切
禁粘贴

代码演示区域

#include<iostream>
#include<cstring>
using namespace std;
int n,ans=0;
char a[1010]; 
int main(){
	cin>>n;
	while(n--){
		cin>>a;
		int cnt=1; //第1个字符肯定要算一个
		for(int i=1;i<strlen(a)+1;i++){ //0下标已经统计了,这里从1开始 
			if(a[i]==a[i-1]){ //当前位置的字符 与 前面的字符 一样 
				cnt++; //计数+1 
			}else{
				cout<<cnt<<a[i-1];
				cnt=1; //当前这个位置的新字符要计数,所以初始化为1 
			} 
		} 
		cout<<endl; 
	}
	return 0;
}
/*	Problem: 改写整数
	Language: C++	Result: 正确 	Time: 2026-05-17 16:29:50
	User: admin  	Problem: 1901	contest_id: 0*/
#include<iostream>
#include<cstring>
using namespace std;
const int N=1e6+10;
int n,b[N],k=0,x=0;//b[i]表示第i个数字,k表示数字个数 
char a[N]; 
int main(){
	fgets(a,sizeof a,stdin); //输入带空格的字符串
	for(int i=0;i<strlen(a);i++){
		//x用于拼数
		if(a[i]>='0'&&a[i]<='9'){ //当前位置是数字字符 
			x=x*10+a[i]-'0'; //先将a[i]转数字,然后拼接在x的个位 
			if(a[i+1]<'0' || a[i+1]>'9'){//后面不是数字,说明一个数字拼接完成,存储到数组中 
				k++; //数字个数+1
				b[k]=x; //存储第k个数字
				x=0;    //x归0,准备下一次拼接 
			} 
		} 
	} 
	
	cout<<k<<endl;
	for(int i=1;i<=k;i++) cout<<b[i]<<endl; 
	return 0;
}
/*
从前往后遍历每个字符
1 当碰到数字字符(该数字字符前面不是数字字符)时,应该开始拼数
2 当前面是数字,当前也是数字,就拼接在前面的数字后面
3 当前是数字,后面不是数字,说明一个数字拼接完成,存储到数组中 
*/

/*	Problem: 整数提取
	Language: C++	Result: 正确 	Time: 2026-05-17 16:11:33
	User: admin  	Problem: 1194	contest_id: 0*/
#include<iostream>
#include<cstring>
using namespace std;
int n,ans=0;
char a[1010];
int main(){
	cin>>a;
	for(int i=0;i<strlen(a);i++){
		int x=a[i]-'0'; //字符转数字
		ans+=x; //数字之和 
	}
	cout<<ans; 
	return 0;
}
/*	Problem: 数字和
	Language: C++	Result: 正确 	Time: 2026-05-17 15:47:06
	User: admin  	Problem: 1872	contest_id: 0*/
#include<iostream>
#include<cstring>
using namespace std;
int n,ans=0;
char a[110];
int main(){
	cin>>n;
	while(n--){ //n组用例 
		cin>>a;
		//首字母必须大写
		if(a[0]>='a'&&a[0]<='z') a[0]-=32;
		//其余字母必须小写
		for(int i=1;i<strlen(a);i++){
			if(a[i]>='A'&&a[i]<='Z') a[i]+=32;
		} 
		
		cout<<a<<endl;
	}
	return 0;
}
/*	Problem: 整理药名
	Language: C++	Result: 正确 	Time: 2026-05-17 15:31:28
	User: admin  	Problem: 1659	contest_id: 0*/
#include<iostream>
#include<cstring>
using namespace std;
char a[110],b[110];
int main(){
	cin>>a>>b;
	if(strlen(a)!=strlen(b)){//长度不等 
		cout<<1;
	}else{ //长度相等有三种情况 
		 if(strcmp(a,b)==0){ //完全相同 
		 	cout<<2; 
		 }else{ //不完全相同
		 	//先都变成小写,再比较 
		 	for(int i=0;i<strlen(a);i++){
		 		if(a[i]>='A'&&a[i]<='Z') a[i]+=32;
			}
			for(int i=0;i<strlen(b);i++){
		 		if(b[i]>='A'&&b[i]<='Z') b[i]+=32;
			}
		 	if(strcmp(a,b)==0){
		 		cout<<3; 
			}else{
				cout<<4;
			}
		 }
	}
	return 0;
}
/*	Problem: 字符串对比
	Language: C++	Result: 正确 	Time: 2026-05-17 15:19:50
	User: admin  	Problem: 1825	contest_id: 0*/
#include<iostream> //解法3 
#include<cstring>
using namespace std;
char a[110];
int main(){
	cin>>a;
	for(int i=strlen(a)-1,j=0;i>j;i--,j++){ //双指针算法 
		if(a[i]!=a[j]){
			cout<<"no";
			return 0;
		} 
	}
	cout<<"yes";
	return 0;
}
/*	Problem: 判断字符串是否为回文
	Language: C++	Result: 正确 	Time: 2026-05-17 15:06:57
	User: admin  	Problem: 1665	contest_id: 0*/
#include<iostream> //解法2
#include<cstring>
using namespace std;
char a[110],b[110];
int main(){
	cin>>a;
	for(int i=strlen(a)-1,j=0;i>=0;i--,j++){
		b[j]=a[i];
	}
	if(strcmp(a,b)==0){ //直接调用函数比较两个字符串 
		cout<<"yes";
	}else{
		cout<<"no";
	}
	return 0;
}
/*	Problem: 判断字符串是否为回文
	Language: C++	Result: 正确 	Time: 2026-05-17 14:57:08
	User: admin  	Problem: 1665	contest_id: 0*/
#include<iostream> //解法1
#include<cstring>
using namespace std;
char a[110],b[110];
bool cmp(char a[],char b[]){
	for(int i=0;i<strlen(a);i++){
		if(a[i]!=b[i]) return false; //只要有某个位置字符不一样,则返回false 
	}
	return true; //循环结束,所有的位置都相同,返回true 
}
int main(){
	cin>>a;
	for(int i=strlen(a)-1,j=0;i>=0;i--,j++){
		b[j]=a[i];
	}
	if(cmp(a,b)){
		cout<<"yes";
	}else{
		cout<<"no";
	}
	return 0;
}
/*	Problem: 判断字符串是否为回文
	Language: C++	Result: 正确 	Time: 2026-05-17 14:52:32
	User: admin  	Problem: 1665	contest_id: 0*/
#include<iostream>
using namespace std;
int a,b;
int main(){
	cin>>a>>b;
	if(a<60&&b>=60 || a>=60&&b<60){ //a不及格但b及格;或者 a及格但b不及格 
		cout<<1; 
	}else{
		cout<<0;
	}
	return 0;
}
/*	Problem: 有一门课不及格的学生
	Language: C++	Result: 正确 	Time: 2026-05-17 11:08:47
	User: admin  	Problem: 1620	contest_id: 0*/
#include<iostream>
using namespace std;
int a,b,ans=0; //计数:ans表示有几门课不及格 
int main(){
	cin>>a>>b;
	if(a<60)   //满足条件,则计数+1 
		ans++;  //相当于ans+=1; 也相当于 ans=ans+1;
	
	if(b<60)   //满足条件,则计数+1 
		ans++;  //相当于ans+=1; 也相当于 ans=ans+1;
	
	if(ans==1) cout<<1;
	else cout<<0; 
	return 0;
}
/*	Problem: 有一门课不及格的学生
	Language: C++	Result: 正确 	Time: 2026-05-17 11:08:36
	User: admin  	Problem: 1620	contest_id: 0*/
#include<iostream>
#include<iomanip>
using namespace std;
double x,y;
int main(){
	cin>>x;
	if(x<1){
		y=x;
	}else if(1<=x&&x<10){
		y=2*x-1;
	}else if(x>=10){
		y=3*x-11;
	}
	cout<<"y="<<setprecision(2)<<fixed<<y;
	return 0;
}
/*	Problem: 分段函数求值
	Language: C++	Result: 正确 	Time: 2026-05-17 10:18:59
	User: admin  	Problem: 1050	contest_id: 0*/
#include<iostream>
using namespace std;
double x,y;
int main(){
	cin>>x;
	if(x<1){
		y=x;
	}else if(1<=x&&x<10){
		y=2*x-1;
	}else if(x>=10){
		y=3*x-11;
	}
	printf("y=%.2lf\n",y);
	return 0;
}
/*	Problem: 分段函数求值
	Language: C++	Result: 正确 	Time: 2026-05-17 10:18:46
	User: admin  	Problem: 1050	contest_id: 0*/
#include<iostream>
using namespace std;
double a,b,ans; //ans答案 
char c;
int main(){
	cin>>a>>b>>c;
	if(c=='+'){ //如果是加法 
		ans=a+b; 
	}else if(c=='-'){//如果是减法 
		ans=a-b; 
	}else if(c=='*'){//乘法 
		ans=a*b;
	}else if(c=='/'){//除法 
		ans=a/b;
	}
	printf("%.2lf",ans); 
	return 0;
}
/*复习一下
基本数据类型:
int 整数类型
long long 长整数
bool 布尔型
char 字符型
double 双精度浮点型
float 单精度浮点型 
*/

/*	Problem: 计算器
	Language: C++	Result: 正确 	Time: 2026-05-17 09:54:58
	User: admin  	Problem: 1061	contest_id: 0*/
#include<iostream>
using namespace std;
int n,ans=0,root;
struct node{//每个节点需要存储节点的值,左孩子的位置,右孩子的位置 
	char c;
	int l,r; //l左孩子的位置,r右孩子的位置 
}a[210]; //二叉链表:存储每个节点的信息 
void dfs(int x){ //搜索节点x 
 	cout<<a[x].c; //输出子树的根
	 if(a[x].l) dfs(a[x].l);//左子树存在,则搜索 
	 if(a[x].r) dfs(a[x].r);//右子树存在,则搜索 
} 
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		char x,y,z;
		cin>>x>>y>>z;
		a[x].c=x; //节点的值,把'a'直接存到97号位置, 'b'是98号位置 .... 
		if(y!='*') a[x].l=y;
		if(z!='*') a[x].r=z;
		
		if(i==1) root=x; //存储根节点的编号 
	}
	dfs(root); //前序遍历 
	return 0;
}
/*
1 存储
2 前序遍历的搜索顺序:根,左子树,右子树 
*/

/*	Problem: 新二叉树
	Language: C++	Result: 正确 	Time: 2026-05-16 20:43:57
	User: admin  	Problem: 2696	contest_id: 0*/
#include<iostream>
#include<vector>
using namespace std;
const int N=1e5+10;
int n,ans=0,fa[N],dep[N],tr[N],si[N],mn=1e9;
vector<int> a[N];
int dfs(int x,int f){//当前节点x,x的父节点是f,返回子树x的大小 
	fa[x]=f; //记录x的父节点
	dep[x]=dep[f]+1; //记录x的深度
	tr[x]=1; //x算一个 
	for(int i=0;i<a[x].size();i++){ //搜索x可以到达的点 
		if(a[x][i]!=f){ //不能搜索x的父 
			tr[x]+=dfs(a[x][i],x); //继续向下搜索 
		} 
	} 
	return tr[x];
} 
int main(){
	cin>>n;
	for(int i=1;i<n;i++){ //n-1条边 
		int x,y; cin>>x>>y; //x到y有边
		a[x].push_back(y);
		a[y].push_back(x); //双向建边 
	} 
	dfs(1,0); //任意取1开始搜索,计算每个点的深度和父节点 
	for(int i=1;i<=n;i++){ //枚举每个点i作为重心,去掉该点后,计算最大连通块大小si[i]
		si[i]=n-tr[i]; //去掉子树i的其余节点的数量
		for(int j=0;j<a[i].size();j++){//遍历一下i的子树 
			if(a[i][j]!=fa[i]){ //不能算i的父节点 
				si[i]=max(si[i],tr[a[i][j]]); 
			} 
		} 
		mn=min(mn,si[i]); //取i的最大连通块大小的最小值 
	}
	for(int i=1;i<=n;i++){
		if(si[i]==mn) cout<<i<<" ";
	} 
	return 0;
}
/*
1、枚举每个点i作为重心,去掉该点后,计算最大连通块大小si[i]。 
2、找出 si[i]的最小值 mn 
3、输出 si的值正好是mn的所有的i 

任意找个点1为根搜索,可以求出:
每个节点的深度
每个节点的父节点
每个节点的子树大小 (怎么知道节点i有哪些子树呢?) 

只需要搜索一次,然后就可以计算出每个点i去掉后的最大连通块大小 
*/

/*	Problem: 树的重心
	Language: C++	Result: 正确 	Time: 2026-05-16 20:18:57
	User: admin  	Problem: 2673	contest_id: 0*/
#include<iostream>
#include<vector>
using namespace std;
const int N=1e5+10;
int n,fa[N],dep[N],ans=0;
vector<int> a[N]; //a[i]存储节点i可以到达的节点编号 
void dfs(int x,int f){//当前节点x,x的父节点是f 
	fa[x]=f; //记录x的父节点
	dep[x]=dep[f]+1; //记录x的深度
	for(int i=0;i<a[x].size();i++){ //搜索x可以到达的点 
		if(a[x][i]!=f){ //不能搜索x的父 
			dfs(a[x][i],x); //继续向下搜索 
		} 
	} 
} 
int main(){
	cin>>n;
	for(int i=1;i<n;i++){ //n-1条边 
		int x,y; cin>>x>>y; //x到y有边
		a[x].push_back(y);
		a[y].push_back(x); //双向建边 
	} 
	dfs(1,0); //任意取1开始搜索,计算每个点的深度和父节点 
	int y=1; //假设深度最大的是1
	for(int i=2;i<=n;i++)
		if(dep[i]>dep[y]) y=i; //找到最远的编号 
	dfs(y,0); //以y为根进行搜索
	int z=1;
	for(int i=2;i<=n;i++)
		if(dep[i]>dep[z]) z=i; //y~z这条直径就找到了 
	int d=dep[z]; 
	if(d%2==0){ //偶数,中心节点的深度是d/2,d/2+1 
		for(int i=1;i<=d/2-1;i++) z=fa[z];//爬树
		cout<<min(z,fa[z])<<' '<<max(z,fa[z]);
	}else{//奇数,中心节点深度是d/2+1 
		for(int i=1;i<=d/2;i++) z=fa[z];//爬树
		cout<<z; 
	} 
	return 0;
}
/*
1、树的中心一定在直径上:
  如果直径长度是偶数,那么只有一个中心点(直径中间)
  如果直径长度是奇数,那么有两个中心点 (直径的中间两个) 
2、树的直径如何计算?
二次搜索法:
首先,任意取一个节点x进行搜索,找出深度最大的节点(任取一个y) 
然后,以y为根进行搜索,找到深度最大的节点z,那么y~z就是直径 
在搜索的过程中,标记每个点的深度和父节点
最后,从节点z向上爬树,两种情况:
z的深度d是偶数,中心节点的深度是d/2,d/2+1 
z的深度d是奇数,中心节点深度是d/2+1 

6
2 1
1 3
3 4
3 5
5 6
*/

/*	Problem: 树的中心
	Language: C++	Result: 正确 	Time: 2026-05-16 19:34:52
	User: admin  	Problem: 2674	contest_id: 0*/
#include<iostream> //LCA:爬树 
#include<cstring>
using namespace std;
int n,ans=0,fa[310],q,a[310],v[310];
int main(){
	cin>>n;
	for(int i=1;i<n;i++) cin>>fa[i];
	cin>>q;
	while(q--){ //q次询问 
		int m; cin>>m;
		for(int i=1;i<=m;i++) cin>>a[i]; //m个人的编号
		for(int i=2;i<=m;i++){ //计算m-1次公共祖先 
			memset(v,0,sizeof v); //每次标记前,清理
			int x=a[i-1]; //计算a[i-1]和a[i]的最近公共祖先 
			while(1){
				v[x]=1; //标记
				if(x==0) break; //到达根节点0 
				x=fa[x]; //爬树,爬到父节点 
			}
			int y=a[i]; //从另外一个节点向上爬
			while(v[y]==0) y=fa[y]; //节点没有标记,才能继续爬
			a[i]=y; //把 a[i-1]和a[i]的最近公共祖先  存入 a[i] 
		}
		cout<<a[m]<<endl; 
	}
	return 0;
}
/*	Problem: ⼯作沟通
	Language: C++	Result: 正确 	Time: 2026-05-16 18:45:06
	User: admin  	Problem: 4074	contest_id: 0*/
#include<iostream>
using namespace std;
int n,m,ans=0,a[110],b[10010],f[10010];
//f[i]表示走到位置i能够得到的最大得分 
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++) cin>>a[i];
	for(int i=0;i<n;i++){ //范围:0~n-1
		cin>>b[i];
		f[i]=-2e9; //状态初始值:极小值 
	}
	f[0]=b[0]; //起始点是0
	for(int i=0;i<n;i++){ //从前往后遍历每个点 
		if(f[i]==-2e9) continue; //这个点不可达,所以也没有必要从该点向下走 
		for(int j=1;j<=m;j++){ //尝试每个通道 
			int x=i+a[j]; //位置i可以到达的位置x
			if(x<n) f[x]=max(f[x],f[i]+b[x]); 
			else ans=max(ans,f[i]); //走出去了,通关 
		} 
	} 
	cout<<ans; 
	return 0;
}
/*
6 2
2 3
1 10000 30 100 30 30
*/

/*	Problem: 闯关游戏
	Language: C++	Result: 正确 	Time: 2026-05-16 18:32:46
	User: admin  	Problem: 4073	contest_id: 0*/
#include<iostream>
using namespace std;
int n,m,ans=0,a[110],b[10010],f[10010];
//f[i]表示走到位置i能够得到的最大得分 
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++) cin>>a[i];
	for(int i=0;i<n;i++){ //范围:0~n-1
		cin>>b[i];
		f[i]=-2e9; //状态初始值:极小值 
	}
	f[0]=b[0]; //起始点是0
	for(int i=0;i<n;i++){ //从前往后遍历每个点 
		for(int j=1;j<=m;j++){ //尝试每个通道 
			int x=i+a[j]; //位置i可以到达的位置x
			if(x<n) f[x]=max(f[x],f[i]+b[x]); 
			else ans=max(ans,f[i]); //走出去了,通关 
		} 
	} 
	cout<<ans; 
	return 0;
}
/*	Problem: 闯关游戏
	Language: C++	Result: 正确 	Time: 2026-05-16 18:29:08
	User: admin  	Problem: 4073	contest_id: 0*/
#include<iostream>
using namespace std;
int p[10]={128,64,32,16,8,4,2,1},a,b,c,d;
string s;
int main(){
	cin>>s;
	for(int i=0;i<8;i++){
		a+=p[i]*(s[i]-'0');
	}
	for(int i=8;i<16;i++){
		b+=p[i-8]*(s[i]-'0');
	}
	for(int i=16;i<24;i++){
		c+=p[i-16]*(s[i]-'0');
	}
	for(int i=24;i<32;i++){
		d+=p[i-24]*(s[i]-'0');
	}
	printf("%d.%d.%d.%d",a,b,c,d);
	return 0;
}
/*
11000000101010000000000101100111
*/
/*	Problem: 进制转换之IP.
	Language: C++	Result: 正确 	Time: 2026-05-16 17:21:43
	User: admin  	Problem: 1941	contest_id: 0*/
#include<iostream>
using namespace std;
int n,ans=0;
string s; 
int main(){
	while(cin>>s){ //多组数据 
		ans=0; //注意,答案初始化为0
		for(int i=0;s[i]!='B';i++){//拆到礼物,就不用继续了 
			if(s[i]=='(') ans++;
			if(s[i]==')') ans--; 
		} 
		cout<<ans<<endl;
	}
	return 0;
}
/*	Problem: 恶搞指数.
	Language: C++	Result: 正确 	Time: 2026-05-16 16:59:33
	User: admin  	Problem: 1511	contest_id: 0*/
#include<iostream>
#include<algorithm>
#include<cmath> 
using namespace std;
int n,ans=0;
string s[30]; //字符串数组 
struct node{
	int v,cnt; //v表示数值,cnt表示v的个数 
}a[300]; //颜色是0~255 
bool cmp(node n1,node n2){
	if(n1.cnt==n2.cnt) return n1.v<n2.v; //数量相同,则数值小的排前面 
	return n1.cnt>n2.cnt; //数量多的排前面 
} 
int ctoi(char c){//字符'0'~'9','A'~'F' 转数字 
	if(c<='9') return c-'0';
	else return c-'A'+10; 
} 
char itoc(int x){ //数字0~15 转 字符 
	if(x<=9) return x+'0';
	else return x+'A'-10;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>s[i]; //输入第i行:一个字符串
		for(int j=0;j<s[i].size();j+=2){//每两位代表一个颜色 
			int x=ctoi(s[i][j])*16+ctoi(s[i][j+1]); //两位的十六进制数字 转 十进制数
			a[x].cnt++; //该颜色的个数累加 
			a[x].v=x; //颜色的数值记录 
		} 
	} 
	sort(a,a+256,cmp); //自定义排序规则 
	for(int i=0;i<=15;i++){ //把排名前面的16位数字要转成十六进制,并输出 
		cout<<itoc(a[i].v/16)<<itoc(a[i].v%16);
	} 
	cout<<endl;
	for(int i=1;i<=n;i++){//处理第i个字符串,变成16级灰阶 
		for(int j=0;j<s[i].size();j+=2){ //两位两位的取 
			int mn=256,mi;//mi是最近的编号,mn是最小的差值 
			int x=ctoi(s[i][j])*16+ctoi(s[i][j+1]); //两位的十六进制数字 转 十进制数
			for(int k=0;k<=15;k++){ //和新的16级灰阶都取一下差值,取最小的差值 
				int cha=abs(x-a[k].v); //计算差值 
				if(mn>cha){
					mn=cha;
					mi=k; //更新颜色编号 
				}else if(mn==cha&&k<mi){ //如果差值一样,那么取更小的k 
					mi=k; 
				} 
			} 
			cout<<itoc(mi); //数字 转 字符 ,再输出 
		} 
		cout<<endl; //记得每一行输出要换行 
	}
	return 0;
}
/*
1 统计每一种颜色的点的数量(数组下标计数),每个点的颜色都是两位字符(十六进制),所以需要先进制转换为10进制。 
2 排序:每一种颜色按照数量排序(从大到小)
3 选前16种作为新的灰阶:把老的颜色 转换为 新的颜色 
*/

/*	Problem: 图像压缩
	Language: C++	Result: 正确 	Time: 2026-05-16 16:25:35
	User: admin  	Problem: 4022	contest_id: 0*/
#include<iostream>
using namespace std;
long long T,n,ans=0;
long long change(long long n){//分离数字n,将奇数位进行变化
	long long sum=0,w=0;//w表示当前是w位,sum是各位变化后的和 
	while(n){
		w++; //位数+1
		int g=n%10; //取出个位
		n/=10; //抹掉个位 
		if(w%2==0){ //偶数位,直接累加到sum 
			sum+=g;
			continue; 
		} 
		g*=7; //奇数位,则先乘以7
		while(g>=10){
			g=g%10+g/10; //个位+十位 
		} 
		sum+=g; //奇数位的变化结果,累加到sum 
	} 
	return sum;
}
int main(){
	cin>>T;
	while(T--){//T组用栗 
		cin>>n;
		long long m=change(n);//1、分离数字n,将奇数位进行变化。
		if(m%8==0) printf("T\n");
		else printf("F\n");
	}
	return 0;
}
/*
1、分离数字n,将奇数位进行变化。
2、在变化过程中,将变化后的数字每一位加起来,判断是否是8的倍数。 
*/

/*	Problem: 幸运数
	Language: C++	Result: 正确 	Time: 2026-05-16 15:39:00
	User: admin  	Problem: 4028	contest_id: 0*/
#include<iostream>
using namespace std;
int n,m,ans=0,a[100010],b[100010];
//a[i]表示第一组里面有多少个i,b[i]表示第二组里面有多少个i 
int main(){
	cin>>n>>m; 
	for(int i=1;i<=n;i++){
		int x; cin>>x;
		a[x]++; //x有多少个:计数 
	}
	for(int j=1;j<=m;j++){
		int x; cin>>x;
		b[x]++; //x有多少个:计数 
	} 
	for(int i=1;i<=100000;i++){
		ans+=min(a[i],b[i]); //取个数较小的那个数量 
	} 
	cout<<ans*2;
	return 0;
}
/*
一、与数字的顺序无关:
上面有数字,如果下面也有,那么一定会消掉 
二、只与某个数字的个数有关 (显然:数组下标计数) 
上面x有5个,下面x有4个,会消掉4*2个,也就是 
上面x有a个,下面x有b个,会消掉min(a,b)个 
*/
/*	Problem: 爬虫消消乐
	Language: C++	Result: 正确 	Time: 2026-05-16 15:12:07
	User: admin  	Problem: 2310	contest_id: 0*/
#include <iostream>
using namespace std;
int a,b,c,sum;
int main(){
  cin>>a>>b>>c;
  cout<<(a/c)*(b/c)<<endl;//长a需要多少个c,宽b需要多少个c
}
/*	Problem: 积木搭建.
	Language: C++	Result: 正确 	Time: 2026-05-16 14:35:48
	User: admin  	Problem: 1949	contest_id: 0*/
#include<iostream>
using namespace std;
int n;
int main(){
	cin>>n;
	for(int i=1;i<=n-1;i++){ //第i行 
		for(int j=1;j<=2*n-1;j++){ //第i行的第j列 
			if(i+j==n+1 || j-i==n-1) cout<<"*";//根据规律 
			else cout<<" ";//其余位置是空格 
		}
		cout<<endl; //每行结束,记得换行 
	} 
	for(int j=1;j<=2*n-1;j++) cout<<"*"; //最后一行就是2*n-1个*
	return 0;
}
/*	Problem: 空心等腰三角形
	Language: C++	Result: 正确 	Time: 2026-05-16 11:26:42
	User: admin  	Problem: 3747	contest_id: 0*/
#include<iostream>
using namespace std;
int n;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){ //第i行 
		for(int j=1;j<=n;j++){ //第i行的第j列 
			if(i==j || i+j==n+1) cout<<"X";//对角线上是X 
			else cout<<" ";//其余位置是空格 
		}
		cout<<endl; //每行结束,记得换行 
	} 
	return 0;
}
/*	Problem: 放大的X
	Language: C++	Result: 正确 	Time: 2026-05-16 11:13:17
	User: admin  	Problem: 3754	contest_id: 0*/
#include<iostream>
using namespace std;
int n;
int main(){
	cin>>n;
	for(int i=n;i>=1;i-=2){//上面是一个倒三角形,从上往下看是第n行,第n-2行,...,第1行 
		//第i行有i个*,所以有n-i个空格,所以*的前面有(n-i)/2个空格 
		int g=(n-i)/2;
		for(int j=1;j<=g;j++) cout<<" ";//输出g个空格 
		for(int j=1;j<=i;j++) cout<<"*";//输出i个* 
		cout<<endl; //每行结束,记得换行 
	} 
	for(int i=3;i<=n;i+=2){//下面是一个反的  (注意,第1行和上面的图形共用了,不再重复输出)
		//第i行有i个*,所以有n-i个空格,所以*的前面有(n-i)/2个空格 
		int g=(n-i)/2;
		for(int j=1;j<=g;j++) cout<<" ";//输出g个空格 
		for(int j=1;j<=i;j++) cout<<"*";//输出i个* 
		cout<<endl; //每行结束,记得换行 
	} 
	return 0;
}
/*	Problem: 沙漏
	Language: C++	Result: 正确 	Time: 2026-05-16 11:01:33
	User: admin  	Problem: 3037	contest_id: 0*/
#include<iostream>
using namespace std;
int n;
int main(){
	cin>>n;
	n=n/2+1; //可以理解成:上面n行,下面n行,最中间可以共用1行 
	for(int i=n;i>=1;i--){ //上面是一个倒三角形,从上往下看是第n行,第n-1行,...,第1行 
		for(int j=1;j<=i;j++){ //第i行正好是i个*号 
			cout<<"*"; //循环输出i次 
		} 
		cout<<endl;//每行结束,记得换行 
	} 
	for(int i=2;i<=n;i++){ //下面是一个反的,从上往下看是第2行,...,第n行 (注意,第1行和上面的图形共用了,不再重复输出)
		for(int j=1;j<=i;j++){ //第i行正好是i个*号 
			cout<<"*"; //循环输出i次 
		} 
		cout<<endl;//每行结束,记得换行 
	} 
	return 0;
}
/*	Problem: 蝴蝶结
	Language: C++	Result: 正确 	Time: 2026-05-16 10:41:50
	User: admin  	Problem: 3750	contest_id: 0*/
#include<iostream>
using namespace std;
int n;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){ //枚举第1个乘数,一共有n行 
		for(int j=1;j<=i;j++){ //枚举第2个乘数,且第二个乘数不能超过第一个乘数 
			printf("%d*%d=%d ",i,j,i*j); //每个公式后面有一个空格 
		} 
		cout<<endl; //每行结束,要换行 
	} 
	return 0;
}
/*	Problem: 请输出n行的9*9乘法表
	Language: C++	Result: 正确 	Time: 2026-05-16 10:32:18
	User: admin  	Problem: 3761	contest_id: 0*/
#include <iostream>
using namespace std;
int n;
int main(){ 
    cin>>n;
    for(int i=1;i<=n;i++){//枚举第一个乘数
        for(int j=1;j<=i;j++){//枚举第二个乘数,第二个乘数不能超过第一个乘数
            cout<<i<<"*"<<j<<"="<<i*j<<" ";//乘法口诀
        }
        cout<<endl;
    }
}
/*	Problem: 请输出n行的9*9乘法表
	Language: C++	Result: 正确 	Time: 2026-05-16 10:28:24
	User: admin  	Problem: 3761	contest_id: 0*/
#include<iostream> //周期问题:需要发现一来一回是一个大周期,里面每三盆是一个小周期
using namespace std;
int m,n;
int main(){
	cin>>m>>n;
	int z=3*m*2-2; //一个大周期的盆数
	n%=z; //只需要计算第一个大周期对应盆的颜色
	if(n==0) n=z; //n是该大周期的最后一盆 
	if(n<=3*m){ //大周期的前半部分,从前往后数 
		if(n%3==0) cout<<"hong"; 
		if(n%3==1) cout<<"lan"; 
		if(n%3==2) cout<<"huang"; 
	}else{ //大周期的后半部分,从后往前数 
		if(n%3==0) cout<<"hong"; 
		if(n%3==1) cout<<"huang"; 
		if(n%3==2) cout<<"lan"; 
	}
	return 0;
}
/*	Problem: 花的颜色
	Language: C++	Result: 正确 	Time: 2026-05-16 10:23:56
	User: admin  	Problem: 3146	contest_id: 0*/
#include<iostream>
using namespace std;
long long m,n,ans=0;
int main(){
	cin>>m>>n;
	for(long long i=2;i*i<=m*n;i++){ //枚举队形的长度 
		long long j=m*n/i; //计算宽度
		if(i*j==m*n) ans++; //判断:人数正好 
	}
	cout<<ans-1;
	return 0;
}
/*	Problem: 队形数量求解
	Language: C++	Result: 正确 	Time: 2026-05-16 10:01:39
	User: admin  	Problem: 3151	contest_id: 0*/
#include<iostream>
using namespace std;
int n;
int main(){
    cin>>n;
    for(int i=2;i<=n;i++){
        for(int j=2;j<=n;j++){
            for(int z=2;z<=n;z++){
                //最朴素的写法,注意判断所有的条件都要满足
                if(i+j+z==n && i%2==0 && j%2==0 &&z%2==0 && i<=j && j<=z){
                    cout<<i<<' '<<j<<' '<<z<<endl;
                }
            }
        }
    }
    return 0;
}
/*	Problem: 种树方案
	Language: C++	Result: 正确 	Time: 2026-05-16 09:49:56
	User: admin  	Problem: 3175	contest_id: 0*/
#include<iostream>
using namespace std;
int n;
int main() {
    cin>>n;
    for(int i=2;i<=n/3;i+=2){//枚举桃树
        for(int j=i;j<=(n-i)/2;j+=2){//枚举梨树,且确保不比桃树少,不比苹果树多
            int k=n-i-j;//计算苹果树
            cout<<i<<" "<<j<<" "<<k<<endl;
        }
    }
    return 0;
}
/*	Problem: 种树方案
	Language: C++	Result: 正确 	Time: 2026-05-16 09:45:26
	User: admin  	Problem: 3175	contest_id: 0*/
#include<iostream>
using namespace std;
int n,a,b,ans=0;
int main(){
	cin>>n>>a>>b;
	for(int i=1;i<=n/a;i++){//枚举大碗的数量 
		int j=(n-i*a)/b; //计算小碗的数量
		//钱要正好花光、小碗数量不能为0、数量都必须是偶数 
		if(j>0&&i*a+j*b==n&&i%2==0&&j%2==0)
			cout<<i<<" "<<j<<endl; 
	}
	return 0;
}
/*	Problem: 阿凡提的难题
	Language: C++	Result: 正确 	Time: 2026-05-16 09:38:36
	User: admin  	Problem: 3122	contest_id: 0*/
#include<iostream>
using namespace std;
int a,b,ans=0;
int main(){
	cin>>a>>b;
	for(int i=a;i<=b;i++){//循环:变量i的范围是a~b之间的每个整数 
		if(i%6==0 || i%8==0){//判断i是6的倍数或8的倍数 
			ans++; //统计个数(满足条件的数) 
		} 
	}
	cout<<ans; 
	return 0;
}
/*	Problem: 乐乐的幸运数
	Language: C++	Result: 正确 	Time: 2026-05-15 20:35:47
	User: admin  	Problem: 1093	contest_id: 0*/
#include<iostream>//解法2 
using namespace std;
int n,ans=0;
int main(){
	cin>>n; 
	//尝试n,n-1,n-2...,一直试到有一个数同时被3,5,7整除 
	for(int i=n;;i--){//循环:变量i的值的取值范围是n,n-1,n-2,...... 
		if(i%3==0 && i%5==0 && i%7==0){//满足条件,则输出答案 
			cout<<i;
			return 0; //结束程序 
		}
	}
	return 0;
}
/*	Problem: 同时被3、5、7整除的数
	Language: C++	Result: 正确 	Time: 2026-05-15 20:24:46
	User: admin  	Problem: 1617	contest_id: 0*/
#include<iostream>//解法1 
using namespace std;
int n,ans=0;
int main(){
	cin>>n; 
	//尝试n,n-1,n-2...,一直试到有一个数同时被3,5,7整除 
	for(int i=n;;i--){//循环:变量i的值的取值范围是n,n-1,n-2,...... 
		if(i%3==0 && i%5==0 && i%7==0){//满足条件,则输出答案 
			cout<<i;
			break;//打破循环 
		}
	}
	return 0;
}
/*	Problem: 同时被3、5、7整除的数
	Language: C++	Result: 正确 	Time: 2026-05-15 20:24:24
	User: admin  	Problem: 1617	contest_id: 0*/
#include<iostream>
using namespace std;
int a,b,ans=0;//ans表示和 
int main(){
	cin>>a>>b;
	for(int i=a;i<=b;i++){//循环:变量i的值的范围是a~b的每个整数 
		ans+=i; //累加求和 
	} 
	cout<<ans; 
	return 0;
}
/*	Problem: 区间求和
	Language: C++	Result: 正确 	Time: 2026-05-15 20:08:13
	User: admin  	Problem: 1096	contest_id: 0*/
#include<iostream> //解法3 
using namespace std;
int n,ans=0;
int main(){
	for(int i=1;;i++){
		ans+=i;//当ans超过1000的时候,结束循环 
		if(ans>1000){ //已经满足要求了,输出i,并结束 
			cout<<i;
			return 0; //正常结束程序 
		}
	} 
	return 0;
}
/*	Problem: 求和到第几项
	Language: C++	Result: 正确 	Time: 2026-05-15 19:55:23
	User: admin  	Problem: 1071	contest_id: 0*/
#include<iostream> //解法2 
using namespace std;
int n,ans=0;
int main(){
	for(int i=1;;i++){
		ans+=i;//当ans超过1000的时候,结束循环 
		if(ans>1000){ //已经满足要求了,输出i,并结束 
			cout<<i;
			break; //打破循环 
		}
	} 
	return 0;
}
/*	Problem: 求和到第几项
	Language: C++	Result: 正确 	Time: 2026-05-15 19:54:52
	User: admin  	Problem: 1071	contest_id: 0*/
#include<iostream> //解法1 
using namespace std;
int n,ans=0,i;
int main(){
	for(i=1;ans<=1000;i++){
		ans+=i;//当ans超过1000的时候,结束循环 
	} 
	cout<<i-1;
	return 0;
}
/*	Problem: 求和到第几项
	Language: C++	Result: 正确 	Time: 2026-05-15 19:53:19
	User: admin  	Problem: 1071	contest_id: 0*/
#include<iostream>
using namespace std;
int n,ji=0,ou=0;
int main(){
	cin>>n;
	for(int j=1;j<=n;j++){ //循环n次,j的值依次是1 2 3 ... n 
		if(j%2==1){//j是个奇数 
			ji+=j; 
		}else{ //否则,j就是个偶数 
			ou+=j;
		} 
	}
	//cout<<"the sum of  odd  numbers  1 to "<<n<<" is : "<<ji<<endl;
	//cout<<"the sum of  even  numbers  1 to "<<n<<" is : "<<ou<<endl;
	printf("the sum of  odd  numbers  1 to %d is : %d\n",n,ji); //整数占位符使用
	printf("the sum of  even  numbers  1 to %d is : %d\n",n,ou);
	return 0;
}
/*	Problem: 奇数偶数的和
	Language: C++	Result: 正确 	Time: 2026-05-15 19:46:04
	User: admin  	Problem: 1067	contest_id: 0*/
#include<iostream>
using namespace std;
int a,b,c;
int main(){
    cin>>a;
    if(a==6){ //如果第1个数字是6,继续输入第2个数字
        cin>>b;
        if(b==6){ //如果第2个数字是6,继续输入第3个数字
            cin>>c;
            if(c==6){ //如果第3个数字也是6
                cout<<1000;
            }else{
                cout<<100;
            }
        }else{
            cout<<10;
        }
    }else{
        cout<<0;
    }
    return 0;
}
/*	Problem: 促销骰子.
	Language: C++	Result: 正确 	Time: 2026-05-15 13:06:39
	User: admin  	Problem: 2008	contest_id: 0*/
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int l[N], r[N];//如题 
int d[N];//d[i] 表示以 i 为根,子树的深度 
bool full[N], comp[N];
//full[i] 表示以 i 为根,子树是否是满二叉树
//comp[i] 表示以 i 为根,子树是否是完全二叉树
void dfs(int root){
	//初始化子节点的属性 
	int ln = l[root], rn = r[root];
	if(ln) dfs(ln);
	if(rn) dfs(rn);
	//计算深度 
	d[root] = max(d[ln], d[rn]) + 1;
	//判断满二叉树 
	if(full[ln] && full[rn] && d[ln] == d[rn]) full[root] = 1;
	//判断完全二叉树 
	if(full[ln] && comp[rn] && d[ln] == d[rn]) comp[root] = 1;
	if(comp[ln] && full[rn] && d[ln] - 1 == d[rn]) comp[root] = 1;
}
int main(){
	int n;
	cin >>n;
	for(int i=1; i<=n; i++)
		cin >>l[i] >>r[i];
	//空子树可以看作一个深度为 0 的满二叉树(完全二叉树) 
	d[0] = 0;
	comp[0] = 1;
	full[0] = 1;
	//DFS 遍历树 
	dfs(1);
	//统计答案 
	int ans = 0;
	for(int i=1; i<=n; i++)
		ans += comp[i];
	cout <<ans <<endl;
	return 0;
}

/*	Problem: 完全二叉树
	Language: C++	Result: 正确 	Time: 2026-05-14 09:31:14
	User: admin  	Problem: 4859	contest_id: 0*/
#include<bits/stdc++.h> 
using namespace std;
typedef long long ll;
const ll N = 1e5+5;
ll c[N],n;
vector<ll> child[N];
ll dfs(ll root){
	if(child[root].empty()) return c[root];
	ll childcost = 0;
	for(ll v : child[root]) childcost += dfs(v);

	return min(childcost,c[root]);
}
int main(){
	cin >> n;
	for(ll i=2;i<=n;i++){
		ll fa;
		cin >> fa;
		child[fa].push_back(i);
	}
	for(ll i=1;i<=n;i++) cin >> c[i];
	
	cout << dfs(1);
	return 0;
}
/*	Problem: 路径覆盖
	Language: C++	Result: 正确 	Time: 2026-05-14 09:09:56
	User: admin  	Problem: 4821	contest_id: 0*/
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

typedef long long LL;

const int N = 2e5 + 10;

int n;
int a[N], b[N];
LL f[N];

int main()
{
    cin >> n;
    for (int i = 1; i <= n; ++ i )
        cin >> a[i];
    for (int i = 1; i <= n; ++ i )
        cin >> b[i];
    
    for (int i = n; i; -- i )
        f[i] = max(f[i + 1], a[i] + f[i + max(1, b[i])]);

    cout << f[1] << endl;
    
    return 0;
}

/*	Problem: 选数
	Language: C++	Result: 正确 	Time: 2026-05-13 19:13:35
	User: admin  	Problem: 4858	contest_id: 0*/
#include<bits/stdc++.h>
using namespace std;
long long n,m,a[1000100],b[1000100],f[1000100];
int main(){
	cin>>n;
	for(int i=1;i<=n;++i) cin>>a[i];
	for(int i=1;i<=n;++i) cin>>b[i];
	for(int i=n;i;i--){
		if(b[i]==0){//注意要特判一下为0的情况
			f[i]=f[i+1]+a[i];
			continue;
		}
		f[i]=max(f[i+b[i]]+a[i],f[i+1]);
	}
	cout<<f[1];
	return 0;
}

/*	Problem: 选数
	Language: C++	Result: 正确 	Time: 2026-05-13 19:11:42
	User: admin  	Problem: 4858	contest_id: 0*/
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k,dp[250005],a[505],c[505],ansmax,inf=1e9;
signed main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++) cin>>a[i]>>c[i],ansmax+=a[i];
	for(int i=1;i<=ansmax;i++) dp[i]=inf;//初始化为极大值
	for(int i=1;i<=n;i++)
		for(int j=ansmax;j>=a[i];j--)
			dp[j]=min(dp[j],dp[j-a[i]]+c[i]);
	for(int i=ansmax;i>=0;i--)
		if(k>=dp[i])
			return cout<<i,0;
	return 0;
}

/*	Problem: 道具商店
	Language: C++	Result: 正确 	Time: 2026-05-13 18:47:07
	User: admin  	Problem: 4822	contest_id: 0*/
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int MAXN = 5e2+5;
const int MAXS = 3e5+5;
int n,k,f[MAXS],a[MAXN],c[MAXN],s;
signed main(){
	memset(f,0x7f,sizeof(f));
	f[0] = 0;
	cin>>n>>k;
	for(int i = 1;i <= n;i++){
		cin>>a[i]>>c[i];
		s += a[i];
	}
	for(int i = 1;i <= n;i++){
		for(int j = s;j >= a[i];j--){
			f[j] = min(f[j],f[j-a[i]]+c[i]);
		}
	}
	for(int i = s;i >= 0;i--){
		if(f[i] <= k){
			cout<<i<<endl;
			break;
		}
	}
	return 0;
} 

/*	Problem: 道具商店
	Language: C++	Result: 正确 	Time: 2026-05-13 18:46:23
	User: admin  	Problem: 4822	contest_id: 0*/
#include<bits/stdc++.h>
using namespace std;
int n,m,x,ans;
map<int,int> w;
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>x;
		w[x]++;
	}
	for(int i=1;i<=m;i++){
		cin>>x;
		if(w[x]) ans++;
	}
	cout<<ans<<endl;
	return 0;
}

/*	Problem: 找数
	Language: C++	Result: 正确 	Time: 2026-05-13 14:08:52
	User: admin  	Problem: 4857	contest_id: 0*/
#include <iostream>
using namespace std;
int l, r;
int main(){
	cin >> l >> r;
	int res = 0;
	for (int i = l; i <= r; ++ i ){
		int x = i;
		while (x % 2 == 0) x /= 2;
		while (x % 5 == 0) x /= 5;
		res += x == 1;
	}
	cout << res << endl;
}

/*	Problem: 有限不循环小数
	Language: C++	Result: 正确 	Time: 2026-05-13 13:48:41
	User: admin  	Problem: 4856	contest_id: 0*/
#include <bits/stdc++.h>
#define int long long
const int N = 1e5 + 5;
const int Mod = 1e9 + 7;
using namespace std;
int n;
int a[N];
bool vis[N];
vector<int> prime;
map<int, vector<int>> cnt;
signed main()
{
    for (int i = 2; i * i < N; i++)
    {
        if (vis[i])
        {
            continue;
        }
        prime.push_back(i);
        for (int j = i * 2; j * j < N; j += i)
        {
            vis[j] = 1;
        }
    }

    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i];
        for (int p : prime)
        {
            int c = 0;
            while (a[i] % p == 0)
            {
                a[i] /= p;
                c++;
            }
            cnt[p].push_back(c);
        }
        if (a[i] > 1)
        {
            cnt[a[i]].push_back(1);
        }
    }

    int ans = 0;
    for (pair<int, vector<int>> t : cnt)
    {
        vector<int> vc = t.second;
        if (vc.size() < n)
        {
            ans += min((int)(vc.size()), (int)(n - vc.size()));
        }
        sort(vc.begin(), vc.end());
        int mid = vc[vc.size() / 2];
        for (int c : vc)
        {
            ans += abs(mid - c);
        }
    }
    cout << ans;
    return 0;
}

/*	Problem: 相等序列
	Language: C++	Result: 正确 	Time: 2026-05-13 13:41:14
	User: admin  	Problem: 4820	contest_id: 0*/
#include <bits/stdc++.h>
using namespace std;

int n, p[100005];

vector < int > prime;
vector < int > a[100005];

void fjzyz(int x)
{
    int t = sqrt(x);
    for (int i = 2; i <= t; i++)
    {
        int cnt = 0;
        while (x % i == 0)
        {
            cnt++;
            x /= i;
        }
        if (p[i] == 0 && cnt > 0) a[i].push_back(cnt);
    }
    if (x > 1) a[x].push_back(1);
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin >> n;
    p[1] = 1;
    for (int i = 2; i <= 316; i++)
        if (p[i] == 0)
        {
            for (int j = i * i; j <= 100000; j += i)
                p[j] = 1;
        }
    for (int i = 1; i <= 100000; i++)
        if (p[i] == 0) prime.push_back(i);
    for (int i = 1; i <= n; i++)
    {
        int x;
        cin >> x;
        fjzyz(x);
    }
    int ans = 0;
    for (auto i : prime)
        if (!a[i].empty())
        {
            sort(a[i].begin(), a[i].end());
            int k = (n + 1) / 2;
            k -= n - (int)a[i].size();
            for (auto j : a[i])
                ans += abs(j - (k >= 0 ? a[i][k - 1] : 0));
            ans += (n - a[i].size()) * (k >= 0 ? a[i][k - 1] : 0);
        }
    cout << ans << '\n';
    return 0;
}

/*	Problem: 相等序列
	Language: C++	Result: 正确 	Time: 2026-05-13 13:40:18
	User: admin  	Problem: 4820	contest_id: 0*/
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,a[N],p[N][20],ans;
void f(int x){
	if(x == 1) return;
	unordered_map<int, int> t;
	for(int i=2;i*i<=x;i++){
		while(x % i == 0){
			p[i][++t[i]]++;
			x /= i;
		}
		if(x == 1) return;
	}
	p[x][++t[x]]++;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		f(a[i]);
	}
	for(int i=2;i<=1e5;i++){
		for(int j=1;j<20;j++){
			if(!p[i][j]) break;
			ans += min(p[i][j], n - p[i][j]);
		}
	}
	cout<<ans;
	return 0;
}

/*	Problem: 相等序列
	Language: C++	Result: 正确 	Time: 2026-05-13 13:38:58
	User: admin  	Problem: 4820	contest_id: 0*/
#include<bits/stdc++.h>
using namespace std;
int n,a[100000];
bool check(int x){
	vector<int> vc;
	for(int i = 0; i < n; i++)
		if(a[i] > x) vc.push_back(a[i]);
	for(int i = 1; i < vc.size(); i += 2)
		if(vc[i] != vc[i - 1]) return false;
	return true;
}
int main(){
	cin >> n;
	for(int i = 0; i < n; i++) cin >> a[i];
	int l = 1, r = 100000;
	while(l < r){
		int mid = (l + r) / 2;
		if(check(mid)) r = mid;
		else l = mid + 1;
	}
	cout << l << endl;
	return 0;
}

/*	Problem: 数字移动
	Language: C++	Result: 正确 	Time: 2026-05-13 10:46:11
	User: admin  	Problem: 4819	contest_id: 0*/
#include<bits/stdc++.h>
using namespace std;
int n,a,max1=0,max2=0,ans=0;//max1最大值,max2次大值
int main(){
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a;
		if(a==max1){
			ans=max(ans,max2);
			max1=0;
			max2=0;
		}else if(a>max1){
			max2=max1;
			max1=a;
		}else if(a>max2)
			max2=a;
	}
	cout<<ans;
	return 0;
}

/*	Problem: 数字移动
	Language: C++	Result: 正确 	Time: 2026-05-13 10:45:01
	User: admin  	Problem: 4819	contest_id: 0*/
#include<iostream>
#include<cstring>
using namespace std;
int n,ans=0;
char a[1010],b[1010],c[1010];
int main(){
    cin>>n;
    while(n--){ //n组用例 
        cin>>a>>b; 
        int j=0;
        for(int i=0;i<=strlen(a)/2-1;i++,j++) c[j]=a[i];//a的前半部分写入c 
        for(int i=0;i<strlen(b);i++,j++) c[j]=b[i];//b的每个字符写入c
        for(int i=strlen(a)/2;i<strlen(a);i++,j++) c[j]=a[i];//a的后半部分写入c
        c[j]='\0'; //设置c的结束符 
        cout<<c<<endl;
    }
    return 0;
}
/*	Problem: 宝藏密码
	Language: C++	Result: 正确 	Time: 2026-05-10 17:07:06
	User: admin  	Problem: 1142	contest_id: 0*/
#include<iostream>
#include<cstring>
using namespace std;
int k;
char a[1010]; 
int main(){
	while(cin>>a>>k){
		int len=strlen(a); //计算字符串的长度
		k=k%len; //移动k次:本质是移动k%len次(len是字符串的长度)
		//分段输出
		for(int i=len-k;i<len;i++) cout<<a[i];
		for(int i=0;i<len-k;i++) cout<<a[i];
		cout<<endl; //多组用例,记得换行 
	} 
	return 0;
}
/*
1、移动k次:本质是移动k%len次(len是字符串的长度)
2、可以分段输出:
   后面k个字符先输出;然后输出前面len-k个字符 
*/

/*	Problem: 字符串右移
	Language: C++	Result: 正确 	Time: 2026-05-10 16:24:34
	User: admin  	Problem: 1135	contest_id: 0*/
#include<iostream>
#include<cstring>
using namespace std;
int n,ans=0;
char a[1010],b[1010];
int main(){
	cin>>n;
	while(n--){ //n组用例 
		cin>>a>>b; 
		for(int i=0;i<=strlen(a)/2-1;i++) cout<<a[i];//先输出第一个串a的前半部分
		cout<<b;//再输出字符串b
		for(int i=strlen(a)/2;i<strlen(a);i++) cout<<a[i];//最后输出第一个串a的后半部分
		cout<<endl;
	}
	return 0;
}
/*
1、先输出第一个串a的前半部分:0 ~ strlen(a)/2-1 
2、再输出字符串b
3、最后输出第一个串a的后半部分 strlen(a)/2 ~ strlen(a)-1
*/
/*	Problem: 宝藏密码
	Language: C++	Result: 正确 	Time: 2026-05-10 16:08:02
	User: admin  	Problem: 1142	contest_id: 0*/
#include<iostream> //解法2:可用函数判断大写字母、小写字母、数字字符 
#include<cstring>
using namespace std;
int n,x,y,z;
char a[510]; 
int main(){
	cin>>a;
	for(int i=0;i<strlen(a);i++){//从下标0开始,遍历a的每个字符 
		if(isupper(a[i])) x++; //大写字母个数+1
		if(islower(a[i])) y++; //小写字母个数+1
		if(isdigit(a[i])) z++; //数字字符个数+1 
	}
	cout<<x<<" "<<y<<" "<<z; 
	return 0;
}
/*	Problem: 统计各种字符的个数
	Language: C++	Result: 正确 	Time: 2026-05-10 16:01:06
	User: admin  	Problem: 1139	contest_id: 0*/
#include<iostream>
#include<cstring>
using namespace std;
int n,x,y,z;
char a[510]; 
int main(){
	cin>>a;
	for(int i=0;i<strlen(a);i++){//从下标0开始,遍历a的每个字符 
		if(a[i]>='A'&&a[i]<='Z') x++; //大写字母个数+1
		if(a[i]>='a'&&a[i]<='z') y++; //小写字母个数+1
		if(a[i]>='0'&&a[i]<='9') z++; //数字字符个数+1 
	}
	cout<<x<<" "<<y<<" "<<z; 
	return 0;
}
/*	Problem: 统计各种字符的个数
	Language: C++	Result: 正确 	Time: 2026-05-10 15:52:00
	User: admin  	Problem: 1139	contest_id: 0*/
#include<iostream>
using namespace std;
long long n,a,b;
int main(){
	cin>>n;
	while(n--){//n组用例 
		cin>>a>>b;
		int flag=0; //标记 
		while(a>0&&b>0){//同时进行数位分离,只要某个数字拆完,那么剩下的位肯定不会进位 
			if(a%10+b%10>=10){ //拆出来的相同位直接求和,然后比较 
				cout<<"Hard\n";
				flag=1; //表示已经输出了 
				break;
			} 
			a/=10;b/=10; //抹掉个位 
		} 
		if(flag==0) cout<<"Easy\n"; //循环结束,都没有输出过,则输出Easy
	}
	return 0;
}
/*
同时进行数位分离,这样拆出来的位一定是相同的位,这个时候直接相加求和,只要和>=10则进位 
*/

/*	Problem: 困难的计算
	Language: C++	Result: 正确 	Time: 2026-05-10 15:29:23
	User: admin  	Problem: 4282	contest_id: 0*/
#include<iostream>
using namespace std;
int n,d,ans=0;
int main(){
	cin>>n>>d;
	for(int i=0;i<=n;i++){ //枚举3的个数 i:i的范围0~n 
		for(int j=0;j<=n;j++){ //枚举2的个数 j:j的范围0~n 
			int k=d-3*i-j*2;
			if(k>=0&&k<=n){ //注意:1的个数k不能是负数 ,且 不能超过n张 
				ans++;
			}
		}
	}
	cout<<ans;
	return 0;
}
/*
1、枚举3的个数 i:i的范围0~n 
2、枚举2的个数 j:j的范围0~n 
3、1的个数 k=d-3*i-j*2
   注意:1的个数k不能是负数 ,且 不能超过n张 
*/
/*	Problem: 卡片
	Language: C++	Result: 正确 	Time: 2026-05-10 15:18:16
	User: admin  	Problem: 2775	contest_id: 0*/
#include<iostream>//数学题:计算长方体的最小表面积 
using namespace std;
int c,n,ans=0;
int main(){
	cin>>c;
	while(c--){//c个用例 
		cin>>n;
		ans=1e9; //初始化为极大值 
		for(int i=1;i<=n;i++){
			if(n%i==0){//长度i必须是n的因子
				for(int j=1;j<=n/i;j++){
					if(n%(i*j)==0){ // 宽度j必须是:i*j必须是n的因子 
						int k=n/i/j; //  直接计算=n/(i*j) 
						ans=min(ans,i*j*2+i*k*2+j*k*2); //计算表面积最小值 
					}
				}
			}
		} 
		cout<<ans<<endl;
	}
	return 0;
}
/*
如何枚举所有的摆法:
1、长度i:范围是1~n,长度i必须是n的因子 
2、宽度j:范围是1~n/i, 宽度j必须是:i*j必须是n的因子 
3、高度k: 直接计算=n/(i*j) 
*/

/*	Problem: 堆积木
	Language: C++	Result: 正确 	Time: 2026-05-10 15:07:12
	User: admin  	Problem: 1292	contest_id: 0*/
#include <iostream> //知识点:1、计数;2、数位分离 
using namespace std;
int a,k,ans=0; //a的第k次出现在哪个数字 
//计数:ans表示现在是第几个a 
int main(){
    cin>>a>>k;
	for(int i=1;;i++){
		int n=i;//n是临时变量,用于拆数 
		while(n){
			if(n%10==a) ans++; //n的个位是a,那么计数+1
			n/=10; //抹掉n的个位 
			if(ans==k){//刚好到达第k个a 
				cout<<i<<endl;
				return 0; //break只能跳出一层循环,这里不要用break 
			} 
		} 
	} 
    return 0;
}
/*	Problem: 寻找页码.
	Language: C++	Result: 正确 	Time: 2026-05-10 14:46:15
	User: admin  	Problem: 1926	contest_id: 0*/
#include<iostream>
using namespace std;
int a,b;
int main(){
	cin>>a>>b;
	int x=a/b;       //现在的单价
	int y=a/(b-b/4); //原来的单价:b/4是赠送的,原来只能买b-b/4箱 
	cout<<y-x;       //原价-现价 
	return 0;
} 
/*	Problem: 促销
	Language: C++	Result: 正确 	Time: 2026-05-08 13:37:02
	User: admin  	Problem: 4061	contest_id: 0*/
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,k,ans,root,w[N];
vector<int> e[N];
void dfs(int x,int fa,int dep,int p){
    ans=max(ans,dep);
    for(int to:e[x]){
        if(to!=fa&&w[to]==(p^1)){
            dfs(to,x,dep+1,p^1);
        }
    }
}
int main(){
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    cin>>n;
    for(int i=1;i<=n;i++) cin>>w[i];
    for(int i=1;i<n;i++){
        int x,y;
        cin>>x>>y;
        e[x].push_back(y);
        e[y].push_back(x);
    }
    for(int i=1;i<=n;i++){
        dfs(i,0,1,w[i]);
    }
    cout<<ans;
    return 0;
}//暴力搜索也可以通过,数据待加强。
/*	Problem: 美丽路径
	Language: C++	Result: 正确 	Time: 2026-05-06 13:04:21
	User: admin  	Problem: 4336	contest_id: 0*/
#include<iostream>
#include<iomanip>
using namespace std;
int n,k,x,y; 
int main(){
    cin>>n; //数组输入n个数据 
    int a[1010];
    for(int i=1;i<=n;i++){
        cin>>a[i];  //输入数组的每个元素,从1号下标开始 
    }
    cin>>k; //下面有k组求和 
    for(int i=1;i<=k;i++){
        cin>>x>>y;  //每一组求和的开始下标x和结束下标y 
        int sum=0; //初始化:和=0 
        for(int j=x;j<=y;j++){
            sum+=a[j]; //累加求和 
        }
        cout<<sum<<endl;  //输出每一组的和 
    }
    return 0;
}
/*	Problem: 元素求和
	Language: C++	Result: 正确 	Time: 2026-05-03 21:14:28
	User: admin  	Problem: 1103	contest_id: 0*/
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Combo {
	int sum, mx, mn, id;
};
bool cmp(const Combo &a, const Combo &b) {
	if (a.sum != b.sum) return a.sum < b.sum;
	if (a.mx != b.mx) return a.mx < b.mx;
	if (a.mn != b.mn) return a.mn < b.mn;
	return a.id < b.id;
}
int n, k;
int main() {
	cin >> n >> k;
	vector<Combo> v(n);
	for (int i = 0; i < n; i++) {
		v[i].sum = 0;
		v[i].mx = -1;
		v[i].mn = 1e9;
		v[i].id = i + 1;
		for (int j = 0; j < k; j++) {
			int x;
			cin >> x;
			v[i].sum += x;
			v[i].mx = max(v[i].mx, x);
			v[i].mn = min(v[i].mn, x);
		}
	}
	sort(v.begin(), v.end(), cmp);
	for (int i = 0; i < n; i++) {
		cout << v[i].id;
		if (i + 1 < n) cout << " ";
	}
	cout << endl;
	return 0;
}
/*	Problem: 礼盒排序
	Language: C++	Result: 正确 	Time: 2026-04-29 17:40:54
	User: admin  	Problem: 4855	contest_id: 0*/
#include <iostream>
using namespace std;
int n, m;
int h[105][105];
int main() {
	cin >> n >> m;
	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++)
			cin >> h[i][j];
	for(int i = 0; i <= max(n, m) + 1; i++)
		h[i][0] = h[0][i] = h[i][m + 1] = h[n + 1][i] = 1e9;
	int ans = 0;
	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++) {
			bool ok = true;
			for(int i2 = i - 1; i2 <= i + 1; i2++)
				for(int j2 = j - 1; j2 <= j + 1; j2++)
					if(h[i][j] > h[i2][j2]) {
						ok = false;
						break;
					}
			ans += ok;
		}
	cout << ans;
	return 0;
}
/*	Problem: 山之谷
	Language: C++	Result: 正确 	Time: 2026-04-29 17:33:44
	User: admin  	Problem: 4854	contest_id: 0*/
#include <iostream>
#include <cstring>
using namespace std;
int main() {
	string s1, s2, s3;
	cin >> s1 >> s2 >> s3;
	int d = s1[0] - s2[0];
	d = (d % 26 + 26) % 26;
	for(int i = 0; i < s3.length(); i++) {
		int ch = (s3[i] - 'A' + d) % 26;
		cout << (char)(ch + 'A');
	}
	return 0;
}
/*	Problem: 凯撒密码
	Language: C++	Result: 正确 	Time: 2026-04-29 14:54:03
	User: admin  	Problem: 4853	contest_id: 0*/
#include <iostream>
using namespace std;
int n, a[50] = {0}, ans = 0;
int main() {
	cin >> n;
	for(int i = 1; i <= n; i++) {
		int t = i, pos = 0;
		while(t) {
			a[pos++] = t % 2;
			t /= 2;
		}
		bool ok = true;
		for(int i = 0; i < pos; i++)
			if(a[i] != a[pos - i - 1]) {
				ok = false;
				break;
			}
		ans += ok;
	}
	cout << ans;
	return 0;
}
/*	Problem: 二进制回文串
	Language: C++	Result: 正确 	Time: 2026-04-29 14:41:52
	User: admin  	Problem: 4852	contest_id: 0*/
#include <iostream>
using namespace std;
int main() {
	int n;
	cin >> n;
	for(int i = 0; i < n; i++) {
		for(int j = 0; j < n; j++) {
			if(j == 0 || j == n - 1) {
				if(i == 0 || i == n - 1)
					cout << '+';
				else
					cout << '|';
			} else {
				if(i == 0 || i == n - 1)
					cout << '-';
				else
					cout << '*';
			}
		}
		if(i + 1 != n)
			cout << endl;
	}
	return 0;
}
/*	Problem: 画画
	Language: C++	Result: 正确 	Time: 2026-04-29 14:37:52
	User: admin  	Problem: 4851	contest_id: 0*/
#include <iostream>
using namespace std;
int main() {
	int l, r, ans = 0;
	cin >> l >> r;
	for(int i = l; i <= r; i++) {
		int c = 0, t = i;
		while(t) {
			if(t % 10 == 2)
				c++;
			t /= 10;
		}
		if(c == 3)
			ans++;
	}
	cout << ans;
	return 0;
}
/*	Problem: 数数
	Language: C++	Result: 正确 	Time: 2026-04-29 14:33:57
	User: admin  	Problem: 4850	contest_id: 0*/
#include <string>
#include <iostream>
using namespace std;

int main() {  //注意:替换ans中的字符ABCD,不要空格,不要写错了答案顺序
	string ans =
	"DBBCB"
	"CBBBC"
	"CBACA"
	"BAABB"
	"BAAAB";
	int no;
	cin>>no;
	cout<<ans[no - 1];
	return 0;
}
/*	Problem: 选择题判断题
	Language: C++	Result: 正确 	Time: 2026-04-29 14:27:57
	User: admin  	Problem: 4847	contest_id: 0*/
#include <string>
#include <iostream>
using namespace std;

int main() {  //注意:替换ans中的字符ABCD,不要空格,不要写错了答案顺序
	string ans =
	"DDBBD"
	"BBAAB"
	"BCDDC"
	"ABABA"
	"BABBA";
	int no;
	cin>>no;
	cout<<ans[no - 1];
	return 0;
}
/*	Problem: 选择题判断题
	Language: C++	Result: 正确 	Time: 2026-04-29 14:25:42
	User: admin  	Problem: 4846	contest_id: 0*/
#include <string>
#include <iostream>
using namespace std;

int main() {  //注意:替换ans中的字符ABCD,不要空格,不要写错了答案顺序
	string ans =
	"ABCAD"
	"BACDB"
	"BBCCA"
	"BABBA"
	"ABABA";
	int no;
	cin>>no;
	cout<<ans[no - 1];
	return 0;
}
/*	Problem: 选择题判断题
	Language: C++	Result: 正确 	Time: 2026-04-29 14:23:10
	User: admin  	Problem: 4845	contest_id: 0*/
#include <string>
#include <iostream>
using namespace std;

int main() {  //注意:替换ans中的字符ABCD,不要空格,不要写错了答案顺序
	string ans =
	"DCBAC"
	"CBADA"
	"BBCBB"
	"AABAB"
	"AABBB";
	int no;
	cin>>no;
	cout<<ans[no - 1];
	return 0;
}
/*	Problem: 选择题判断题
	Language: C++	Result: 正确 	Time: 2026-04-29 14:20:52
	User: admin  	Problem: 4844	contest_id: 0*/
#include <string>
#include <iostream>
using namespace std;

int main() {  //注意:替换ans中的字符ABCD,不要空格,不要写错了答案顺序
	string ans =
	"BBBBA"
	"BBBBB"
	"BCBBA"
	"AABBA"
	"BABBB";
	int no;
	cin>>no;
	cout<<ans[no - 1];
	return 0;
}
/*	Problem: 选择题判断题
	Language: C++	Result: 正确 	Time: 2026-04-29 14:18:23
	User: admin  	Problem: 4843	contest_id: 0*/
#include <string>
#include <iostream>
using namespace std;

int main() {  //注意:替换ans中的字符ABCD,不要空格,不要写错了答案顺序
	string ans =
	"CBCBD"
	"BBDBA"
	"BBCAD"
	"BBAAA"
	"AABBA";
	int no;
	cin>>no;
	cout<<ans[no - 1];
	return 0;
}
/*	Problem: 选择题判断题
	Language: C++	Result: 正确 	Time: 2026-04-29 14:15:55
	User: admin  	Problem: 4842	contest_id: 0*/
#include <string>
#include <iostream>
using namespace std;

int main() {  //注意:替换ans中的字符ABCD,不要空格,不要写错了答案顺序
	string ans =
	"BDDCB"
	"AACCA"
	"BCBAA"
	"ABBAA"
	"AABBA";
	int no;
	cin>>no;
	cout<<ans[no - 1];
	return 0;
}
/*	Problem: 选择题判断题
	Language: C++	Result: 正确 	Time: 2026-04-29 14:13:02
	User: admin  	Problem: 4841	contest_id: 0*/
#include <string>
#include <iostream>
using namespace std;

int main() {  //注意:替换ans中的字符ABCD,不要空格,不要写错了答案顺序
	string ans =
	"BADDA"
	"ABDDB"
	"BBDBA"
	"AABBA"
	"AABAB";
	int no;
	cin>>no;
	cout<<ans[no - 1];
	return 0;
}
/*	Problem: 选择题判断题
	Language: C++	Result: 正确 	Time: 2026-04-29 14:10:02
	User: admin  	Problem: 4840	contest_id: 0*/
#include<iostream>
using namespace std;
int main(){
    int a1,a2,a3,a4,a5;
    cin>>a1>>a2>>a3>>a4>>a5;
    a1=a1/3;a2=a2+a1;a5=a5+a1;
    a2=a2/3;a1=a1+a2;a3=a3+a2;
    a3=a3/3;a2=a2+a3;a4=a4+a3;
    a4=a4/3;a3=a3+a4;a5=a5+a4;
    a5=a5/3;a1=a1+a5;a4=a4+a5;
    cout<<a1<<" "<<a2<<" "<<a3<<" "<<a4<<" "<<a5;
    return 0;
}
/*	Problem: 分糖果2
	Language: C++	Result: 正确 	Time: 2026-04-29 09:41:33
	User: admin  	Problem: 1037	contest_id: 0*/
# coding=utf-8
import turtle      #使用import语句导入海龟画图模块,默认画图的是箭头
turtle.shape('turtle')    #将画图设置为小海龟
turtle.forward(100)     #前进100步(像素)
turtle.right(90)        #右转90度
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.forward(100)    
turtle.left(90)         #左转90度
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
/*	Problem: 【python】【非自动判题】画一个日字形
	Language: Python	Result: 正确 	Time: 2026-04-29 08:36:13
	User: admin  	Problem: 2838	contest_id: 0*/
#include <iostream>
using namespace std;
char a; 
int main() {
	while(cin>>a){
		if(a=='4') cout<<8;
		else cout<<a;
	}
	return 0;
}
/*	Problem: 数字替换
	Language: C++	Result: 正确 	Time: 2026-04-27 08:53:38
	User: admin  	Problem: 4849	contest_id: 0*/
#include <iostream>
using namespace std;
int main() {
	int a, b = 0, t = 1;
	cin >> a;
	while(a) {
		if(a % 10 == 4)
			b += t * 8;
		else
			b += t * (a % 10);
		a /= 10;
		t *= 10;
	}
	cout << b;
	return 0;
}
/*	Problem: 数字替换
	Language: C++	Result: 正确 	Time: 2026-04-27 08:49:37
	User: admin  	Problem: 4849	contest_id: 0*/
#include <iostream>
using namespace std;
int main() {
    int H1, H2, H3, H4;
    cin >> H1 >> H2 >> H3 >> H4;
    
    int ans = H2;//假设H2是答案
    int d = H1 - H2;
    if (d < 0) d = -d;
    int mnd = d;//更新差值最小值
    
    d = H1 - H3;
    if (d < 0) d = -d;
    if (d < mnd || (d == mnd && H3 < ans)) ans = H3, mnd = d;//更新答案和差值最小值
    
    d = H1 - H4;
    if (d < 0) d = -d;
    if (d < mnd || (d == mnd && H4 < ans)) ans = H4, mnd = d;//更新答案和差值最小值
    
    cout << ans << endl;//输出答案
    return 0;
}
/*	Problem: 交朋友
	Language: C++	Result: 正确 	Time: 2026-04-27 08:47:51
	User: admin  	Problem: 4848	contest_id: 0*/
#include<iostream>
#include<cstring>
using namespace std;
int n,ans=0;
char a[1010]; 
int main(){
	cin>>n;
	while(n--){
		cin>>a;
		//遍历字符串a的每一个字符
		for(int i=0;i<strlen(a);i++){  
			if(a[i]>='A'&&a[i]<='Z') a[i]+=32; //先全部变成小写
			
			if(a[i]=='a' || a[i]=='e' || a[i]=='i' || a[i]=='o' || a[i]=='u') a[i]-=32; //元音字母变成小写 
		} 
		cout<<a<<endl;
	}
	return 0;
}
/*	Problem: 元音字母转换
	Language: C++	Result: 正确 	Time: 2026-04-26 16:26:51
	User: admin  	Problem: 1144	contest_id: 0*/
#include<iostream>
#include<cstring>
using namespace std;
int n,ans=0;
char a[1010]; 
int main(){
	cin>>n;
	while(n--){
		cin>>a;
		//遍历字符串a的每一个字符
		for(int i=0;i<strlen(a);i+=2){  //下标0和1位置对调,2和3位置对调... 
			swap(a[i],a[i+1]); //交换相邻两个字符的位置 
		} 
		cout<<a<<endl;
	}
	return 0;
}
/*	Problem: 奇偶位互换
	Language: C++	Result: 正确 	Time: 2026-04-26 16:19:26
	User: admin  	Problem: 1143	contest_id: 0*/
#include<iostream>
using namespace std;
int n,ans=0;
char a[1010]; 
int main(){
	cin>>n;
	while(n--){
		cin>>a;
		//遍历字符串a的每一个字符
		for(int i=0;a[i];i++){
			if(a[i]>='A'&&a[i]<='Z') a[i]+=32; //大写,则变小写
			else a[i]-=32; //小写,则变大写 
		} 
		cout<<a<<endl;
	}
	return 0;
}
/*	Problem: 大小写互换
	Language: C++	Result: 正确 	Time: 2026-04-26 16:06:03
	User: admin  	Problem: 1132	contest_id: 0*/
#include<iostream>
#include<cstring>
using namespace std;
int n,ans=0;
char a[1010]; 
int main(){
	cin>>n;
	while(n--){
		cin>>a;
		//遍历字符串a的每一个字符
		for(int i=0;i<strlen(a);i++){
			if(a[i]>='A'&&a[i]<='Z') a[i]+=32; //大写,则变小写
			else a[i]-=32; //小写,则变大写 
		} 
		cout<<a<<endl;
	}
	return 0;
}
/*	Problem: 大小写互换
	Language: C++	Result: 正确 	Time: 2026-04-26 16:05:14
	User: admin  	Problem: 1132	contest_id: 0*/
#include<iostream>
using namespace std;
char a,b;//定义两个字符 
int main(){
	cin>>a>>b;
	for(char i=a;i<=b;i+=2) cout<<i<<" ";//正向间隔输出 
	cout<<endl;
	
	for(char i=b;i>=a;i-=2) cout<<i<<" ";//反向间隔输出 
	cout<<endl;
	return 0;
}
/*	Problem: 字符正向、反向间隔输出
	Language: C++	Result: 正确 	Time: 2026-04-26 15:58:10
	User: admin  	Problem: 1126	contest_id: 0*/
#include<iostream>
#include<cstring>
using namespace std;
int n,ans=0;
char a[1010];
int main(){
	cin>>n; 
	fgets(a,sizeof(a),stdin); //读入n后面的换行符 
	while(n--){
		fgets(a,sizeof(a),stdin); //读入一个带空格的字符串 
		cout<<strlen(a)-1<<endl; //减去1:换行符不能算在字符串长度中 
	}
	return 0;
}
/*	Problem: 带空格字符串的输入
	Language: C++	Result: 正确 	Time: 2026-04-26 15:49:24
	User: admin  	Problem: 1129	contest_id: 0*/
#include<iostream>
#include<cstring>
using namespace std;
int n,ans=0;
char a[1010]; 
int main(){
	cin>>a;
	int len=strlen(a);
	for(int i=len-2;i>=0;i--) cout<<a[i];
	return 0;
}
/*
1 计算字符串的长度
2 循环输出 
*/
/*	Problem: 字符串倒序输出
	Language: C++	Result: 正确 	Time: 2026-04-26 15:34:34
	User: admin  	Problem: 1130	contest_id: 0*/
#include<iostream>
using namespace std;
int n,ans=0;
char a[1010];
int main(){
	cin>>a;//输入不带空格的字符串 
	cout<<a;
	return 0;
}
/*	Problem: 一串字符
	Language: C++	Result: 正确 	Time: 2026-04-26 15:28:22
	User: admin  	Problem: 1041	contest_id: 0*/
#include<iostream>
using namespace std;
char c1[100]="Hello Hi";
char c2[50]="Nice to Meet You";
int main(){
	cout<<c1<<endl;
	cout<<c2<<endl;
	cout<<c1[1]<<c1[3]<<c1[5]<<c1[7]<<endl;
	cout<<c2[0]<<c2[2]<<c2[4]<<c2[6]<<c2[8]<<endl;
	return 0;
}
/*	Problem: 字符数组的定义赋值与输出
	Language: C++	Result: 正确 	Time: 2026-04-26 15:16:41
	User: admin  	Problem: 1127	contest_id: 0*/
#include<iostream>
using namespace std;
int n,ans=0;
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		int x=n-i+1,d=0;
		for(int j=1;j<=n;j++){
			printf("%3d",x);
			if(j==i) d=-1;//第i行从第i列之后,开始-1 
			x+=d;
		}
		cout<<endl; 
	}
	return 0;
}
/*	Problem: 拐角II
	Language: C++	Result: 正确 	Time: 2026-04-26 14:55:46
	User: admin  	Problem: 3101	contest_id: 0*/
#include<iostream>
using namespace std;
int n,ans=0;
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		int x=1,d=1; 
		for(int j=1;j<=n;j++){
			printf("%3d",x);
			if(x==i) d=0;//当x到达i之后,就不变了
			x+=d;
		} 
		cout<<endl;
	} 
	return 0;
}
/*	Problem: 拐角I
	Language: C++	Result: 正确 	Time: 2026-04-26 14:42:28
	User: admin  	Problem: 3100	contest_id: 0*/

重要提示:代码要自己写!

操作被阻止:禁止复制/粘贴/点击!