蓝桥冲刺31天,第十七天C/C++题解(C语言)

3 篇文章 0 订阅
2 篇文章 0 订阅

前言:
✌ 作者简介:CC++Edge淇,大家可以叫我--斯淇。(CSDN优质博客的建议加这一条)
📑 个人主页:CC++Edge淇主页
📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
🔥 如果感觉博主的文章还不错的话,还请不吝👍关注、点赞、收藏三连支持👍一下博主哦
💬 人生格言:琴键有限,人生无限--《海上钢琴师》💬
————————————————
 

                                              🎉🎉欢迎持续关注🎉🎉
                                           🎉 隐约雷鸣 🎉 阴霾天空 🎉
                                     🎉 但盼风雨来 🎉 能留你在此 🎉

目录

题目描述(金币)

题目描述(工资)

输出

题目描述(金币)

在很久很久以前,有 nn 个部落居住在平原上,依次编号为 11  nn。第 ii 个部落的人数为 t_iti

有一年发生了灾荒。年轻的政治家小蓝想要说服所有部落一同应对灾荒,他能通过谈判来说服部落进行联合。

每次谈判,小蓝只能邀请两个部落参加,花费的金币数量为两个部落的人数之和,谈判的效果是两个部落联合成一个部落(人数为原来两个部落的人数之和)。

输入描述

输入的第一行包含一个整数 nn,表示部落的数量。

第二行包含 nn 个正整数,依次表示每个部落的人数。

其中

输出描述

输出一个整数,表示最小花费。

输入输出样例

示例 1输入

4
9 1 3 5

输出

31

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

思路:通过for循环去找这个最小值,通过最小值来讲所有的解列出,中间看好条件的需要,将条件设计成问题所需要的条件,进行最后一步输出,但是要注意这里J需要自减,最后一步需要从1开始循环,不然最终会输出33这个答案!

说白了你得去判断(每次的剩余天数和n的关系即可)!!!

代码如下!!

1.	#include<stdio.h>  
2.	int main(){   
3.	    int i,j,sum,num,a[1001],k;  
4.	    int n,m;  
5.	    scanf("%d",&n);  
6.	    for(i=0;i<n;i++)  
7.	        scanf("%d",&a[i]);  
8.	        for(i=0;i<n;i++){  
9.	            for(j=0;j<n-1;j++){  
10.	                if(a[i]>a[j+1]){  
11.	                    k=a[j];  
12.	                    a[j]=a[j+1];  
13.	                    a[j+1]=k;  
14.	                    }  
15.	            }  
16.	        }  
17.	    j=n-1;  
18.	  k=(a[0]+a[1])*j;  
19.	    j--;  
20.	    for(i=1;i<n;i++){  
21.	        k+=(a[i]*j);  
22.	        j--;  
23.	    }  
24.	    printf("%d",k);  
25.	    return 0;  
26.	}   

上测试图片!!!! 

 在蓝桥杯官方里面是可以检测通过的!!!

题目描述(工资)

国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币......;这种工资发放模式会一直这样延续下去:当连续 NN 天每天收到 NN 枚金币后,骑士会在之后的连续 N+1N+1 天里,每天收到 N+1N+1 枚金币。

请计算在前 KK 天里,骑士一共获得了多少金币。

输出

输入只有 1 行,包含一个正整数 K\ 1 \leq K \leq 10^4K 1K104,表示发放金币的天数。

示例 1

6

输出

14

解析:使用枚举去将所有的可能性列举出来!

将六天分开来看,第一天为一枚,后两天为两枚,后三天为三枚..一直在递增可以设为i为变量

每天可以设置j进行枚举,在for循环里面进行条件的摘除!(注意别超时)

测试可以通过上代码!!

1.	#include<stdio.h>  
2.	int main(){  
3.	int i,j,k,sum=0,n,num=0,ans=0;  
4.	scanf("%d",&n);  
5.	for(i=1;i<=n;i++){  
6.	    for(j=1;j<=i;j++){  
7.	        num+=i;  
8.	        sum++;  
9.	        if(sum==n){  
10.	            printf("%d",num);  
11.	            return 0;  
12.	        }  
13.	    }  
14.	}  
15.	    return 0;     
16.	}   

今天先到这里明天继续!!!!!!!!!等我更新!! 

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员阿龙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值