题解

264 条题解

  • 3
    @ 2018-08-18 09:54:34
    #include<cstdio>
    int a,b,c;
    double ans;
    int main()
    {
        scanf("%d",&a);
        int i=1;
        while(ans<=a)
        {
            ans+=1.0/i;
            i++;
        }
        printf("%d",i-1);
        return 0;
    }
    
  • 2
    @ 2018-08-18 09:52:33
    #include<iostream>
    using namespace std;
    int main()
    {
        double an=0;
        int a,i=1;
        cin>>a;
        while(an<=a)
        {
            an+=1.0/i;
            i++;
        }
        cout<<i-1;
        return 0;
    }
    
  • 1
    @ 2018-09-05 21:22:21

    lo
    ```cpp
    #include<iostream>
    using namespace std;

    int main(){
    int k;
    double tot,i;
    cin>>k;
    i=0.00000;
    tot=0.00000;
    while(tot<=k){
    i++;
    tot+=1/i;
    }
    cout<<i<<endl;
    }
    ```

  • 0
    @ 2021-07-23 08:49:58

    #include<bits/stdc++.h>//万能头文件
    using namespace std;
    double x;
    int s,i;
    //把变量定义成全局变量,变量一开始值都是0
    int main(){
    cin>>s;//输入
    for(i=1;;i++){
    x=x+1.0*1/i;//累加
    if(x>s)break;//达到条件后就可以退出循环了
    }
    cout<<i;//输出
    return 0;//在NOIP考场上,不写return 0会爆0的!!!所以return 0很重要!
    }

  • 0
    @ 2020-03-31 17:15:53

    #include<iostream>
    using namespace std;
    int main(){
    double S=0;
    int k,n=1;
    cin>>k;
    while(S<=k){
    S+=1.0/n;
    n++;
    }
    cout<<n-1;
    }

  • 0
    @ 2020-03-19 00:23:16

    这个题看似是一个简单,但是会经常出现一种思维漏洞

    首先

    题目问的是要大于**k**的数,也就是说我们不清楚要循环多少次,因为我们使用while循环,然后在
    while循环中要使用题目的逆命题也就是要小于等于**k**, 但是由于精度问题当k与n相等的时候。n其实已经比k大了所以在,打印答案的时候就需要减去1才对

    // 级数求和
    // https://vijos.org/p/1127
    
    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        int n = 1;
        int a = 0;
        double sum = 0;
    
        cin >> a;
    
        while (sum <= a) {
            sum += 1.0 / n;
            n++;
        }
    
        cout << n - 1 << endl;
    
        return 0;
    }
    
  • 0
    @ 2020-03-17 19:03:20
    #include<iostream>
    using namespace std;
    
    int main () {
        int k, n = 1;
        double sn = 0;
        cin >> k;
        
        while(sn <= k) {
            sn += 1.0/n;
            n++;
        }
        
        cout << n - 1 << endl;
        return 0;
    } 
    
  • 0
    @ 2019-06-17 13:50:22

    #include <iostream>
    using namespace std;
    int main(void)
    {
    double k, n = 1.0, all = 0.0;
    cin >> k;
    while (all <= k) {
    all += (1 / n);
    ++n;
    }
    cout << (--n);
    return 0;
    }

  • 0
    @ 2019-01-02 19:03:39
    #include<iostream>
    #include<cstdio>
    using namespace std;
    int main()
    {
        int n=1;double s=1,k;
        scanf("%lf",&k);
        do
        {
            n++;
            s+=1.00/n;
        }
        while(s<=k);
        cout<<n<<endl;
        return 0;
    }
    
  • 0
    @ 2018-12-29 21:00:50

    还行,只要用到iostream就行。
    c++

    #include <iostream>
    
    using namespace std ;
    
    int n ;
    double a[10000] , k ;
    
    int main()
    {
        cin >> n ;
        for ( int i = 1 ; /*sb*/ ; i ++ )
        {
            k += 1.0 / i ;
            if ( k > n )
            {
                cout << i << endl ;
                return 0 ;
            }
        }
        return 0 ;
    }
    
  • 0
    @ 2018-11-03 20:55:18

    Pascal代码
    var
    s:real;
    k,i:longint;
    begin
    read(k);
    while s<=k do
    begin
    inc(i);
    s:=s+1/i;
    end;
    write(i);
    end.

  • 0
    @ 2018-10-01 22:05:34

    p党来了。
    var
    k,s:real;
    i:longint;
    begin
    read(k);
    while s<k do
    begin
    i:=i+1;
    s:=s+1/i;
    end;
    write(i);
    end.

  • 0
    @ 2018-09-13 20:19:22

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
    double i=1,n=0,k;
    cin>>k;
    for(i=1;i>0;)
    {
    n+=1/i;
    if(n<=k)
    i++;
    else break;
    }
    cout<<i;
    return 0;
    }

  • 0
    @ 2018-08-08 19:13:46

    Pascal党,请注意查收
    var i,K:longint;
    Sn:real;
    begin
    readln(K);
    Sn:=0;
    i:=0;
    while Sn<=K do
    begin
    inc(i);
    Sn:=Sn+1/i;
    end;
    writeln(i);
    end.

  • 0
    @ 2018-08-07 16:06:00

    C++AC标程(2):
    #include<bits/stdc++.h> //万能头文件,这是可以用的!!好开森!
    using namespace std;
    int main()
    {
    int k,i=0;
    double s=0.0000;
    cin>>k;
    do
    {
    i++;
    s=s+ (1.0/i);
    }
    while (s<=k);
    printf("%d",i);
    return 0;
    }

  • 0
    @ 2016-09-17 10:17:57

    样例我虽不对,但满分

  • 0
    @ 2016-03-06 19:49:46
    #include <iostream>
    #include <string.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <algorithm>
    #include <math.h>
    
    using namespace std;
    long long a[16]{0,2,4,11,31,83,227,616,1674,4550,12367,33617,91380,248397,675214,1835421};
    int main(){
        int k;
        scanf("%d",&k);a
        printf("%lld",a[k]);
        return 0;
    }
    
  • 0
    @ 2016-03-02 14:50:39

    #include <iostream>
    #include <string.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <algorithm>
    #include <math.h>

    using namespace std;
    long long a[16]{0,2,4,11,31,83,227,616,1674,4550,12367,33617,91380,248397,675214,1835421};
    int main(){
    int k;
    scanf("%d",&k);
    printf("%lld",a[k]);
    return 0;
    }
    表一发

  • 0
    @ 2016-01-18 20:18:13

    var
    i,j,k,o,p,n,m:longint;
    ans:real;
    begin
    read(k);
    i:=0;
    while ans<=k do
    begin
    inc(i);
    ans:=ans+1/i;
    end;
    writeln(i);
    end.

  • 0
    @ 2015-11-01 11:11:38

    忽然发现有人用公式做的。
    根据欧拉公式S=1+1/2+1/3+1/4+1/5+...+1/n=ln(n)+γ
    ∴n=e^(S-C)
    盗一下楼上的代码。
    ##Lang: C++

    #include <iostream>
    #include <cmath>
    using namespace std;

    int main(){
    int k;
    cin >> k;
    cout << int(exp(k - 0.577215) + 0.5) << endl;

    return 0;
    }

信息

ID
1127
难度
4
分类
模拟 点击显示
标签
递交数
10299
已通过
4700
通过率
46%
被复制
14
上传者