yangdoubao 发表于 2021-10-26 22:38:02

关于csp题目的问题

我是初学者,别喷

题目链接https://www.luogu.com.cn/problem/P1035

写了两份

这个过了
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    double s=0.0000;
    int n,k;
    cin>>k;
    for(n=0;s<=k;)
    {   
      n++;
      s+=(1.0/n);
    }
    printf("%d",n);
    return 0;
}

这个没过
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    double s=0.0000;
    int n,k;
    cin>>k;
    for(n=1;s<=k;n++)s+=(1.0/n);
    printf("%d",n);
    return 0;
}

这两份有啥区别啊?有没有dalao指点下?

傻眼貓咪 发表于 2021-10-26 22:38:03

C++#include <iostream>

double S(int n){
    double sum = 0;
    for(int i = 1; i < n+1; i++) sum += (1/(float)i);
    return sum;
}

int main(){
    int n = 1, k;
    std::cin >> k;
    while(S(n) <= k) n++;
    std::cout << n << std::endl;
    return 0;
}C#include <stdio.h>

double S(int n){
    double sum = 0;
    for(int i = 1; i < n+1; i++) sum += (1/(float)i);
    return sum;
}

int main(){
    int n = 1, k;
    scanf("%d", &k);
    while(S(n) <= k) n++;
    printf("%d", n);
    return 0;
}PythonS = lambda n: sum([(1/i) for i in range(1, n+1)])
k = int(input())
n = 1
while S(n) <= k:
    n += 1
print(n)5
83

嘉岳呀 发表于 2021-10-27 07:59:00

应该是顺序问题吧

hrpzcf 发表于 2021-10-27 08:30:27

for(n=0;s<=k;)
for(n=1;s<=k;n++)

一个从0开始,一个从1开始,不一样的

yangdoubao 发表于 2021-10-27 10:44:44

hrpzcf 发表于 2021-10-27 08:30
for(n=0;s

但第一次运行时理论来讲n都是1啊

hrpzcf 发表于 2021-10-27 11:16:56

本帖最后由 hrpzcf 于 2021-10-27 12:25 编辑

yangdoubao 发表于 2021-10-27 10:44
但第一次运行时理论来讲n都是1啊

因为第二个,循环最后一步是n++,结果多1了。
页: [1]
查看完整版本: 关于csp题目的问题