第7周项目3求两个正整数的正差值

  1. /* 
  2. * Copyright (c) 2014,烟台大学计算机学院 
  3. * All right reserved. 
  4. * 作者:王元阳
  5. * 完成时间:2014年10月12日 
  6. * 版本号:v1.0 
  7. * 
  8. * 问题描述:输入两个整数,求出两个整数的正差值并输出。 
  9. */  
  10. #include <iostream>   
  11. using namespace std;  
  12. int main()  
  13. {  
  14.     int a,b,c;  
  15.     cout<<"请输入两个正数:"<<endl;  
  16.     cin>>a>>b;  
  17.      if(a>b)
  18.         c=a-b;
  19.      else
  20.         c=b-a;
  21.       cout<<"两个值的正差值为:"<<c<<endl;  
  22.     return 0;  
  23. }


### 回答1: 算法1: 直接按照题目描述解,注意要开长整型,因为分母和分子可能非常大。 时间复杂度 O(n^2) Java 代码 算法2: 根据分数的规律,发现每一项分子和分母的差都是1,并且除了第一项外每一项的分母都是上一项的分子,因此可以在递推过程中直接计算出分子和分母,避免了重复计算。 时间复杂度 O(n) Java 代码 class Main{ public static void main(String[] args){ Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); double sum = 0; double a = 1, b = 1; //第一项的分子和分母 for(int i = 1; i <= n; i++){ sum += a / b; //累加 double t = a; //保存上一项的分子 a = a + 1; //当前项的分子是上一项的分子加1 b = b + t / b; //当前项的分母是上一项的分子除以上一项的分母再加上上一项的分母 } System.out.println(String.format("%.2f", sum)); //保留两位小数输出 } } ### 回答2: 首先,我们需要找出这个数列的规律。观察数列,我们可以发现: 第1项为:1 - 1/2 第2项为:2/3 - 3/5 第3项为:4/8 - 5/13 第4项为:6/21 - 7/34 ...... 我们可以发现,每一项的分子为2的倍数,而分母则是一个递增的数列。分母的规律是:2,5,13,34....可以看出,每一项的分母i都可以表示为2 * (i-1) + 1。 有了这个规律,我们可以开始计算前n项的和。假设前n项的和为S,我们可以用循环来累加每一项的差值。 我们假设循环变量为i,从1到n进行循环。每次循环,我们将i的奇偶性判断一下,如果是奇数,则将i加1得到分子,如果是偶数,则将i减1得到分子。 假设当前循环到第i项,分子为numerator,分母为denominator,差值为difference,那么根据奇偶性,有: 如果i是奇数,S += numerator / denominator; 如果i是偶数,S -= numerator / denominator; 最后输出S即可。 以下是具体的代码实现: ``` n = int(input()) S = 0 denominator = 2 # 第一项的分母为2 numerator = 1 # 第一项的分子为1 for i in range(1, n+1): if i % 2 == 1: difference = 1 # 如果i是奇数,则差值为1 else: difference = -1 # 如果i是偶数,则差值为-1 S += numerator / denominator numerator += difference denominator = 2 * (i - 1) + 1 print(S) ``` 希望能够帮助到你! ### 回答3: 题目要通过计算并输出给定数列的前n项和。数列的形式为1-1/2 2/3-3/5 4/8-5/13 6/21-… 根据数列的规律可以发现,分子逐项增加2,分母逐项增加5,并且每两项之间的差异较小。因此,我们可以利用循环结构来计算数列的前n项和。 首先,我们需要声明一个变量sum来保存数列的前n项和,并初始化为0。然后,利用循环结构来计算数列的每一项,并累加到sum中。 具体的算法如下: 1. 读取输入的正整数n; 2. 声明一个变量sum,并初始化为0; 3. 声明一个变量numerator用来表示每一项的分子,初始值为1; 4. 声明一个变量denominator用来表示每一项的分母,初始值为2; 5. 使用for循环从1到n进行迭代: 1. 计算当前项的值,即numerator/denominator; 2. 将当前项的值累加到sum中; 3. 更新numerator和denominator,分别加2和5; 6. 输出sum。 下面是使用Python语言实现的示例代码: ```python n = int(input("请输入一个正整数n:")) sum = 0 numerator = 1 denominator = 2 for i in range(1, n+1): item = numerator / denominator sum += item numerator += 2 denominator += 5 print("数列的前", n, "项和为:", sum) ``` 该算法的时间复杂度为O(n),可以在短时间内完成较大规模的计算。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值