洛谷基础题练习5

1. 杨辉三角

题目描述

给出 n(n ≤ 20),输出杨辉三角的前 n 行。

样例输入

6

样例输出

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
#include <stdio.h>

int main()
{
	int i, j, n;
	scanf("%d", &n);
	int a[n][n];
	for(i=0; i<n; i++)
	{
		a[i][0] = 1;		// 每行第一列元素的值为1 
		a[i][i] = 1;		// 对角线元素值为1 
	}
	
	for(i=2; i<n; i++)
	{
		for(j=1; j<i; j++)
		{
			a[i][j] = a[i-1][j-1] + a[i-1][j];  // 值为上一行同列和前一列两个数之和
		}
	}
	
	for(i=0; i<n; i++)
	{
		for(j=0; j<=i; j++)
		{
		    if (j != i)
			    printf("%d ", a[i][j]);
			else
			    printf("%d", a[i][j]);
		}
		printf("\n");
	}
	return 0;
}

2. 自动修正

题目描述

输入一个长度不超过 100 且不包括空格的字符串。要求将该字符串中的所有小写字母变成大写字母并输出。

输入格式

输入一行,一个字符串。

输出格式

输出一个字符串,即将原字符串中的所有小写字母转化为大写字母。

样例输入

Luogu4!

样例输出

LUOGU4!
str1 = input().strip()
print(str1.upper())

3. 闰年展示

题目描述

输入 x,y(1582 ≤ x < y ≤ 3000),输出 [x,y] 区间中闰年个数,并在下一行输出所有闰年年份数字,使用空格隔开。

输入格式

输入两个正整数 x,y,以空格隔开。

输出格式

第一行输出一个正整数,表示 [x,y] 区间中闰年个数。

第二行输出若干个正整数,按照年份单调递增的顺序输出所有闰年年份数字。

样例输入

1989 2001

样例输出

3
1992 1996 2000
def is_leap(year):
    """判断是否是闰年"""
    if (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0):
        return True
    else:
        return False


x, y = map(int, input().strip().split())
if 1582 <= x < y <= 3000:
    count = 0
    leap_years = []
    for year in range(x, y+1):
        if is_leap(year):
            count += 1
            leap_years.append(year)
    print(count)
    print(' '.join(map(str, leap_years)))

4. 猴子吃桃

题目描述

一只小猴买了若干个桃子。第一天他刚好吃了这些桃子的一半,又贪嘴多吃了一个;接下来的每一天它都会吃剩余的桃子的一半外加一个。第 n 天早上起来一看,只剩下 1 个桃子了。请问小猴买了几个桃子?

输入格式

输入一个正整数 n(1 ≤ n ≤ 20),表示天数。

输出格式

输出小猴买了多少个桃子。

样例输入

4

样例输出

22
n = int(input())
ans = 1
while n > 1:
    ans = (ans + 1) * 2
    n -= 1
print(ans)

5. 培训

题目描述

某培训机构的学员有如下信息:

  • 姓名(字符串)
  • 年龄(周岁,整数)
  • 去年 NOIP 成绩(整数,且保证是 5 的倍数)

经过为期一年的培训,所有同学的成绩都有所提高,提升了 20%(当然 NOIP 满分是 600 分,不能超过这个得分)。

输入学员信息,请设计一个结构体储存这些学生信息,并设计一个函数模拟培训过程,其参数是这样的结构体类型,返回同样的结构体类型,并输出学员信息。

输入格式

第一行输入一个正整数 n(1≤n≤5),表示学员个数。

第二行开始往下 n n n 行。每行首先是一个字符串表示学员姓名,再是一个整数表示学员年龄(年龄为 0∼100(含 0 与 100)的整数),再是一个整数为去年 NOIP 成绩(0∼600(含 0 与 600)的 5 的整倍数)。

输出格式

输出 n 行,每行首先输出一个字符串表示学生姓名,再往后两个整数,表示经过一年的培训后学员的年龄和他们今年的 NOIP 成绩。以空格隔开。

样例输入

3
kkksc03 24 0
chen_zhe 14 400
nzhtl1477 18 590

样例输出

kkksc03 25 0
chen_zhe 15 480
nzhtl1477 19 600
#include <stdio.h>

typedef struct Student
{
	char name[20];   // 姓名 
	int age;		 // 年龄 
	int score;		 // 成绩 
};

int main()
{
	int n;
	scanf("%d", &n);
	struct Student stu[n];
	int i;
	for (i=0; i<n; i++)
	{
		scanf("%s %d %d", &stu[i].name, &stu[i].age, &stu[i].score);
	}
	for (i=0; i<n; i++)
	{
		stu[i].age += 1;
		stu[i].score *= 1.2;
		if (stu[i].score > 600)
			stu[i].score = 600;
		printf("%s %d %d\n", stu[i].name, stu[i].age, stu[i].score);
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦里逆天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值