我个这为什么不是满分啊

P1035 [NOIP2002 普及组] 级数求和

clhjswe @ 2017-05-22 17:29:23

#include <stdio.h>
void main()
{
    float n=0;
    int i=0
    short int k;
    scanf("%d",&k);
    while(n<=k)
        n=n+1.0/++i;
    printf("%d",i);
}

by 封癫 @ 2017-05-22 18:15:27

@LJW_559_2291237307 首先

main只能是int类型

其次你没打分号

我估计你编译都没过


by clhjswe @ 2017-05-22 20:59:42

@封癫 这个呢

#include <stdio.h>
int main()
{
    float n=0;
    int i=0;
    short int k;
    scanf("%d",&k);
    while(n<=k)
        n=n+1.0/++i;
    printf("%d",i);
    return 0;
}
还只有60分

by 封癫 @ 2017-05-22 21:03:15

说不定你要用double

@LJW_559_2291237307


by 暮心MuShin @ 2017-06-01 21:09:44

就是用double才有剩下的40分


by liuxu @ 2017-06-10 14:46:45

题目描述

已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。

现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。

输入输出格式

输入格式:

一个正整数K。

输出格式:

一个正整数N。

输入输出样例

输入样例#1:

1 输出样例#1:

2


by liuxu @ 2017-06-10 14:47:26

#include <iostream>
#include <cstdio>
using namespace std;
int main(){
    int k,n=100000000,i;
    double Sn=0;
    cin>>k;
    for(i=1;i<=n;i++){
        Sn+=1.0/i;
        if(Sn>k){
            cout<<i<<endl;
            break;
        }
    }
    return 0;
}

by liuxu @ 2017-06-10 14:48:09

@liuxu 这个可以过你看看


|