专栏文章

题解:B4350 [信息与未来 2025] 美味水果

B4350题解参与者 3已保存评论 3

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
3 条
当前快照
1 份
快照标识符
@mip1faw4
此快照首次捕获于
2025/12/03 04:35
3 个月前
此快照最后确认于
2025/12/03 04:35
3 个月前
查看原文

B3450 题解:

主要思路:

  • 将序列从大到小排序。
  • 递归求解当前值的平方根。
  • 求和输出。

代码实现:

定义一个数组 aa,循环输入 aa 数组,将 aa 数组快排(这里我用的 greater<int>() 比较器),再循环处理一遍,每次循环用递归函数处理当前值,最后求和输出。
AC code:
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
int fun(int x,int y){
	int num=x;
	int k=y;
	num=sqrt(num);//开方 
	k--;
	//特判 
	if(num==1){
		return num;
	}
	if(k==1){
		return num;
	}else{
		fun(num,k);
	}
}//递归函数 
int n;
int a[100010];
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	//快排 
	sort(a+1,a+n+1,greater<int>());
	int sum=a[1];
	for(int i=2;i<=n;i++){
		//调用函数,a[i] 为当前待处理值,i 为当前循环次数 
		a[i]=fun(a[i],i);
		sum+=a[i];
	}
	cout<<sum;
	return 0;
}

评论

3 条评论,欢迎与作者交流。

正在加载评论...