不考400不改名 @ 2021-08-05 11:24:02
这题简简单单
TLE了 直接奉上代码
#include<iostream>
using namespace std;
int main(){
int k,s=0,n=1;
cin>>k;
while(s<k){
s+=1/n;
n++;
}
cout<<n;
return 0;
}
by Wildcxj @ 2021-08-05 11:25:40
这个肯定啊1/n除了第一次就肯定是0啊。。。。。。
by _caiji_ @ 2021-08-05 11:26:02
整数除法 -> 浮点数除法
by 不考400不改名 @ 2021-08-05 11:26:18
@Terrible 能过,完全能过,只是超时,需要一个优化解
by Terrible @ 2021-08-05 11:27:25
并不只是超时的问题,你这个程序就不会停机。
TLE是程序不给你算了,不是结果对,时间超了。
by Terrible @ 2021-08-05 11:27:55
#include <cstdio>
int main()
{
double S=0;int K,i=0;
scanf("%d",&K);
for(i=0;S<=K;){i++;S+=1/double(i);}
printf("%d",i);
}
这是我当年的代码。
by 不考400不改名 @ 2021-08-05 11:28:15
@Wildcxj 定义的n=1,所以s不等于0,只是超时了,示例数据是能过得
by spdarkle @ 2021-08-05 11:28:15
@不考400不改名 开double试试,而且你这个绝对错误,C++是int除法自动向下取整,意思就是你这个1/n每一次都是0,就等于死循环
by 不考400不改名 @ 2021-08-05 11:28:57
@Terrible 受教了,谢谢
by spdarkle @ 2021-08-05 11:29:47
只有第一个1/n,n==1的时候才除出来一个1,n大于1之后每次除法都是0
by Jorisy @ 2021-08-05 11:30:34
@不考400不改名 第一次是1,从第二次开始,每次加0