P1035永远60分求解

P1035 [NOIP2002 普及组] 级数求和

jadekwok @ 2019-11-14 16:48:03

#include <stdio.h>

int main()
{
    int k,n=1;
    float Sn=0;
    scanf("%d",&k);
    while(k)
    {
        Sn+=1.0/n;
        if(Sn>k)
            break;
        n++;
    }
    printf("%d",n);
    return 0;
}

已经尝试给所有带Sn处旁边的数值乘1.0 但也不可以 大神求解


by 熊崇文 @ 2019-11-14 16:49:17

#include<iostream>
using namespace std;
int main(){
    double a=0,k,s=0.0;
    cin>>k;
    while(a<=k){
         s++;
         a+=double(1.00/s);
    }
    cout<<s<<endl;
    return 0;
}

by 林聪 @ 2019-11-14 16:49:46

@jadekwok 把float改成double,float精度太低了


by jadekwok @ 2019-11-14 16:59:04

@熊崇文 超级感谢!


by jadekwok @ 2019-11-14 16:59:20

@林聪 超级感谢!


by yinlei @ 2019-11-14 18:11:40

@林聪 为什么精度不够就要报错???/


by 林聪 @ 2019-11-14 18:46:31

@yinlei 没报错啊,只是AC不了


by yinlei @ 2019-11-14 23:28:09

@林聪 那为什么这道题要这么高的精度啊?


by 林聪 @ 2019-11-14 23:31:11

@yinlei 因为输入15的时候答案是1835421,你说用不用高精度


by yinlei @ 2019-11-14 23:56:39

@林聪 哇!流弊!!!!!!


by yinlei @ 2019-11-15 00:01:43

@林聪 大神 加私信!!!!


| 下一页