周报222222

P5721 【深基4.例6】数字直角三角形

题目描述

给出 n,请输出一个直角边长度是 n 的数字直角三角形。所有数字都是 2 位组成的,如果没有 2 位则加上前导 00。

输入格式

输入一个正整数 n。

输出格式

输出如题目要求的数字直角三角形。

输入输出样例

输入 

5

输出 

0102030405
06070809
101112
1314
15

说明/提示

数据保证,1≤n≤13。

代码实现

#include<stdio.h>
int main() {
	int n = 0;
	scanf("%d", &n);
	int count = 1;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n-i+1; j++) {
			printf("%02d", count++);
		}
		printf("\n");
	}
	return 0;
}

其中第一个 for 循环遍历行数,第二个for循环遍历每行的数字的个数,要注意的是我们这里要对第二个 for 的判断条件 +1,即: j <= n - i + 1;

定义的 count 是为了保证数字递增。

P1614 爱与愁的心痛

题目描述

最近有 n 个不爽的事,每句话都有一个正整数刺痛值(心理承受力极差)。爱与愁大神想知道连续 m 个刺痛值的和的最小值是多少,但是由于业务繁忙,爱与愁大神只好请你编个程序告诉他。

输入格式

第一行有两个用空格隔开的整数,分别代表 n 和 m。

第 2 到第 (n+1) 行,每行一个整数,第 (i+1) 行的整数 ai​ 代表第 i 件事的刺痛值 ai​。

输出格式

输出一行一个整数,表示连续 m 个刺痛值的和的最小值是多少。

输入输出样例

输入 

8 3
1
4
7
3
1
2
4
3

输出 

6

说明/提示

数据规模与约定
  • 对于 30%30% 的数据,保证 n≤20。
  • 对于 60%60% 的数据,保证 n≤100。
  • 对于 90%90% 的数据,保证 n≤103。
  • 对于 100%100% 的数据,保证 0≤m≤n≤3×103,1≤ai​≤100。

代码实现

#include<stdio.h>
int a[10005];
int main(void)
{
    int n,m;
    int min=0;
    int tmp=0;
    scanf("%d%d",&n,&m);
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    for(int i=0;i<m;i++) min+=a[i];
    for(int i=1;i<=n-m;i++){
        for(int j=i;j<i+m;j++){
            tmp+=a[j];
        }
        if(min>tmp) min=tmp;
        tmp=0;
    }
    printf("%d",min);
    return 0;
}

首先根据题目要求的数据范围,我们要在 main 函数之前开一个大小为 10005 的数组大小。

其中第 12 行将刺痛值的最小值定义为 0 —— m-1 个连续数字的和。

第  13 行:由于上一行已经对m 个数加和,那么循环遍历的判断条件是 i <= n - m 即可。

第 14 行和第 12 行的思想一样,把每次从 i 开始的连续 m个数字加和,与之前的我们自己定义的 min 进行比较,如果 min > tmp ,则 min = tmp 。(即第 17 行)

最后最关键的一点是不要忘了将 tmp 再赋值为 0 。(某两人犯了好几次错误辽)

最后输出即可。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值