子序列求和算法

该博客探讨了如何计算特定子序列的平方和问题。给定两个正整数m和n,小于10^6,任务是计算1/n^2 + (n+1)^2 + ... + m^2,并保留五位小数。博客提供了样例输入和输出,并指出解决方案可能并不复杂,只需直接使用循环计算即可。博主并未发现潜在的陷阱或复杂性。
摘要由CSDN通过智能技术生成

Question

输入两个正整数,m和n<10^6,输出 1/n^2 + (n+1)^2+…….+m^2,保留五位小数,输入包含多组数据,结束标志位n=m=0;

样例输入: 2 4 65536 655360

样例输出 0.42361 0.00001

Idea

好像 ,嗯 ,一点思路都不需要哇,只需要按部就班的走循环就好,说有陷阱,可能我太菜了。没找到

code

#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main() {
    int n, m;
    cout << "请输入两个小于十的六次方的数" << endl;
    cin >> n 
在C语言中,求解最大子序列和通常使用的是Kadane算法。这个算法的核心思想是从数组元素中找到连续的子序列,使得这个子序列的和最大。以下是基本步骤: 1. 初始化两个变量:`current_sum`用于记录当前子序列的和,初始值设为数组的第一个元素;`max_sum`用于存储到目前为止的最大子序列和,初始值也为第一个元素。 2. 遍历数组,对于每个元素,计算当前元素加上前一个`current_sum`的和,如果这个和大于当前元素本身,则更新`current_sum`;如果`current_sum`小于0,说明负数会影响整体和,所以从零开始计算新的子序列。 3. 每次遍历结束后,`current_sum`就是本次循环中的最大子序列和。比较`current_sum`和`max_sum`,取较大者作为最终的最大子序列和。 4. 当所有元素处理完毕后,`max_sum`即为整个数组的最大子序列和。 以下是一个简单的C语言函数实现示例: ```c #include <stdio.h> int maxSubArraySum(int arr[], int size) { int current_sum = arr[0]; int max_sum = arr[0]; for (int i = 1; i < size; i++) { current_sum = max(arr[i], current_sum + arr[i]); max_sum = max(max_sum, current_sum); } return max_sum; } // 辅助函数,返回两数中的较大值 int max(int a, int b) { return a > b ? a : b; } int main() { int arr[] = { -2, 1, -3, 4, -1, 2, 1, -5, 4 }; int size = sizeof(arr) / sizeof(arr[0]); printf("The maximum subsequence sum is: %d\n", maxSubArraySum(arr, size)); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值