2022年传智杯前三题题解(c/c++)赛道

一. 洛谷P8869 [传智杯 #5 初赛] A-莲子的软件工程学

1.题目内容

内容链接

2.题意分析

定义一个fun函数实现条件判断的功能,并注意对于全部数据,保证a,b在32 位有符号整型范围内,所以要开long long int

3.完整代码

#include<bits/stdc++.h>
#include<cmath>
using namespace std;
int funl(long long int a,long long int b)
{
	if(b>0) return 1;
	else if(b<0) return -1;
	
}
int main()
{
	long long int a,b;
	scanf("%lld%lld",&a,&b);
	long long int c=funl(a,b);
	printf("%lld",c*abs(a));
	
	
	return 0;
	
	
}

二.P8870 [传智杯 #5 初赛] B-莲子的机械动力学

1.题目内容

内容链接

2.题意分析

直接看题目描述,不难发现这是一个考察进位的问题,末位从2开始依次累加,这里我们要注意每次数据进位是减去大于对应位的值,而不是除去。然后我们在输入数据是定义的数组应尽量逆序赋值,正序输出,这是防止进位时边界出错。

3.完整代码

#include<stdio.h>
#include<math.h>
const int N = 2E+6;
int n, m, a[N], b[N], c[N + N];
int main() {
	scanf("%d%d", &n, &m);
	for (int i = n; i >= 1; i--) scanf("%d", &a[i]);
	for (int j = m; j >= 1; j--) scanf("%d", &b[j]);
	int  mix = n > m ? n : m;
	for (int i = 1; i <= mix; i++) {
		c[i] += a[i] + b[i];
		if (c[i] >= i + 1) {
			c[i] -= (i + 1);
			c[i + 1]++;
		}
	}
	mix++;//进位扩一位
	while (c[mix] == 0 && mix > 0) mix--;//处理前缀0的情况
	if (mix <= 0) mix = 1;//最小情况为1
	for (int i = mix; i >= 1; i--)
		printf("%d ", c[i]);
	return 0;
}

三.P8871 [传智杯 #5 初赛] C-莲子的排版设计学

1.题目内容

内容链接

2.题意分析

输入输出发现1的左右两端各一个空格,到了两位数考察补位情况,仅右边一个空格,所以我们定义一个函数关于判断一个数是几位数。然后用getline可读取空格实现,一般输入cin到空格就结束

3.完整代码

#include<iostream>
#include<cstring>
using namespace std;
const int maxn=2e4+10;	
string txt[maxn];
int fun(int n)
{
	int w=1;
	while(n)
	{
		
		n=n/10;
		++w;
	}
	return w;
}
int main()
{
	string a;
	int m=0;

	while(getline(cin,a))
	{
		++m;
		txt[m]=a;
	}
	int pos=fun(m);
	for(int i=1;i<=m;i++)
	{
		int l=fun(i);
		for(int j=1;j<=pos-l;j++)
		{
			cout<<" ";
		}
		cout<<i<<" ";
		cout<<txt[i]<<endl;
	}
	return 0;
}
  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值