洛谷——P1035 [NOIP2002 普及组] 级数求和

逃离我推掉我的手 2023-10-02 10:57 118阅读 0赞

P1035 [NOIP2002 普及组] 级数求和

题目描述

已知:S_n= 1+\frac{1}{2}+\frac{1}{3}+…+\frac{1}{n}S\*n=1+21+31+…+n1。显然对于任意一个整数 kk,当 nn 足够大的时候,S_n>kS**n>k*。

现给出一个整数 kk,要求计算出一个最小的 nn,使得 S_n>kS\*n>k*。

输入格式

一个正整数 kk

输出格式

一个正整数 nn

输入输出样例

输入 #1复制

  1. 1

输出 #1复制

  1. 2

说明/提示

【数据范围】

对于 100%100% 的数据,1\le k \le 151≤k≤15。


解法一:可作为练习(提交只能40分)

  1. package com.kk.luogu;
  2. import java.util.Scanner;
  3. //级数求和
  4. public class P1035 {
  5. public static void main(String[] args) {
  6. Scanner scanner = new Scanner(System.in);
  7. int nums=scanner.nextInt();
  8. System.out.println(SummationOfSeries(nums));
  9. }
  10. public static int SummationOfSeries(int num){
  11. double sum=0;
  12. int i=1;
  13. int tmp=0;
  14. for ( i = 1; i < 10005; i++) {
  15. sum+=(double) 1/i;
  16. if(sum>num) {
  17. tmp=i;
  18. break;
  19. }
  20. }
  21. return tmp;
  22. }
  23. }

解法二:枚举法(得100分)

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main() {
  4. int k,n=0;
  5. cin>>k;
  6. for(double Sn=0;Sn<=k;++n,Sn+=1.0/n);
  7. cout<<n;
  8. return 0;
  9. }

发表评论

表情:
评论列表 (有 0 条评论,118人围观)

还没有评论,来说两句吧...

相关阅读