当时认为
“还是暴力~”
刚才也是以为对了……
结果一查是TL超时了……
当时是这样写的:
#include<stdio.h>
int main() {
long long int N;
int i;
scanf("%lld",&N);
for(i=1; i<N; i++) {
if((N%(i+1))==0)
break;
}
printf("%d\n",i);
return 0;
}
然后重新写了下:
其实本质还是暴力……
但这次只到sqrt(N)
但这样会造成当N为质数时输出错误
所以还需要再加一个判定
AC打码如下:
#include<stdio.h>
#include<math.h>
int main() {
long long N,K;
double L;
scanf("%lld",&N);
L=sqrt(N);
for(K=1; K<=L; K++) {
if((N%(K+1))==0)
break;
}
if(K<=L)
printf("%lld\n",K);
else
printf("%lld\n",N-1);
return 0;
}
这是人家11月份的题啊!!!