鱼C论坛

 找回密码
 立即注册
查看: 2364|回复: 5

[已解决]关于csp题目的问题

[复制链接]
发表于 2021-10-26 22:38:02 | 显示全部楼层 |阅读模式
10鱼币
我是初学者,别喷

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

写了两份

这个过了
  1. #include<iostream>
  2. #include<cstdio>
  3. using namespace std;
  4. int main()
  5. {
  6.     double s=0.0000;
  7.     int n,k;
  8.     cin>>k;
  9.     for(n=0;s<=k;)  
  10.     {   
  11.         n++;
  12.         s+=(1.0/n);
  13.     }
  14.     printf("%d",n);
  15.     return 0;
  16. }
复制代码


这个没过
  1. #include<iostream>
  2. #include<cstdio>
  3. using namespace std;
  4. int main()
  5. {
  6.     double s=0.0000;
  7.     int n,k;
  8.     cin>>k;
  9.     for(n=1;s<=k;n++)  s+=(1.0/n);
  10.     printf("%d",n);
  11.     return 0;
  12. }
复制代码


这两份有啥区别啊?有没有dalao指点下?
最佳答案
2021-10-26 22:38:03
C++
  1. #include <iostream>

  2. double S(int n){
  3.     double sum = 0;
  4.     for(int i = 1; i < n+1; i++) sum += (1/(float)i);
  5.     return sum;
  6. }

  7. int main(){
  8.     int n = 1, k;
  9.     std::cin >> k;
  10.     while(S(n) <= k) n++;
  11.     std::cout << n << std::endl;
  12.     return 0;
  13. }
复制代码
C
  1. #include <stdio.h>

  2. double S(int n){
  3.     double sum = 0;
  4.     for(int i = 1; i < n+1; i++) sum += (1/(float)i);
  5.     return sum;
  6. }

  7. int main(){
  8.     int n = 1, k;
  9.     scanf("%d", &k);
  10.     while(S(n) <= k) n++;
  11.     printf("%d", n);
  12.     return 0;
  13. }
复制代码
Python
  1. S = lambda n: sum([(1/i) for i in range(1, n+1)])
  2. k = int(input())
  3. n = 1
  4. while S(n) <= k:
  5.     n += 1
  6. print(n)
复制代码
  1. 5
  2. 83
复制代码

最佳答案

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-10-26 22:38:03 | 显示全部楼层    本楼为最佳答案   
C++
  1. #include <iostream>

  2. double S(int n){
  3.     double sum = 0;
  4.     for(int i = 1; i < n+1; i++) sum += (1/(float)i);
  5.     return sum;
  6. }

  7. int main(){
  8.     int n = 1, k;
  9.     std::cin >> k;
  10.     while(S(n) <= k) n++;
  11.     std::cout << n << std::endl;
  12.     return 0;
  13. }
复制代码
C
  1. #include <stdio.h>

  2. double S(int n){
  3.     double sum = 0;
  4.     for(int i = 1; i < n+1; i++) sum += (1/(float)i);
  5.     return sum;
  6. }

  7. int main(){
  8.     int n = 1, k;
  9.     scanf("%d", &k);
  10.     while(S(n) <= k) n++;
  11.     printf("%d", n);
  12.     return 0;
  13. }
复制代码
Python
  1. S = lambda n: sum([(1/i) for i in range(1, n+1)])
  2. k = int(input())
  3. n = 1
  4. while S(n) <= k:
  5.     n += 1
  6. print(n)
复制代码
  1. 5
  2. 83
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-10-27 07:59:00 | 显示全部楼层
应该是顺序问题吧
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-10-27 08:30:27 | 显示全部楼层
for(n=0;s<=k;)
for(n=1;s<=k;n++)

一个从0开始,一个从1开始,不一样的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-10-27 10:44:44 | 显示全部楼层

但第一次运行时理论来讲n都是1啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-10-27 11:16:56 | 显示全部楼层
本帖最后由 hrpzcf 于 2021-10-27 12:25 编辑
yangdoubao 发表于 2021-10-27 10:44
但第一次运行时理论来讲n都是1啊


因为第二个,循环最后一步是n++,结果多1了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-26 00:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表