请问各位大佬我这个哪有问题?(分子分母分开算的)

P1035 [NOIP2002 普及组] 级数求和

aaok @ 2019-10-11 23:00:14

include<stdio.h>

include<math.h>

include<stdlib.h>

int main(){ int K; scanf("%d",&K); int a,b,i; a=1; b=1; i=2; do{ a=ai+b; b=bi; i++; }while((a/b)-K<=0); int N; m=(a/b)-K; N=i-1; printf("%d",N); return 0; }


by ❤_JOKER_Xue @ 2019-10-11 23:07:23

希望更丰富的展现?使用Markdown


by aaok @ 2019-10-12 11:35:16

@❤_JOKER_Xue 思路是这样的

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main(){
    int K;
    scanf("%d",&K);
    double a,b;//分别代表分子分母
    a=1;
    b=1;
    int i;//计数器和下一项的分母
    i=2;
    double s;//分子比上分母,即当前的级数之和
    while(s-K<=0){
        a=a*i+b;//新的分子是原分子(a)乘以下一项分母(i)加上原分母(b)乘以下一项分子(1)
        b=b*i;//新的分母是原分母与新分母之积
        i++;//计数器自身变化
        s=a/b;
    }
    int N;
    N=i-1;//计数器最后会多计一次数,故减去一次
    printf("%d",N);
    return 0;
}

然后一直到前五项都是对的,第六项突然出现偏差而且越来越大,是我这个程序精度不够还是别的什么原因?


|