不借助开方

直接遍历一次,找出临界条件,但是通过了80%的用例,有知道为啥么




#include <stdio.h>

int main()
{
    int n, j, i;
    scanf("%d", &n);
    for(i = 1; j=n/i; i++)
        if (i * j == n && i > j)
            break;
    printf("%d %d\n", j, i);
        
}


全部评论
因为你不符合第二个相差最小的原则,你只是让他们相乘的结果等于n
点赞 回复 分享
发布于 2022-01-25 12:36
这思路太优秀了
点赞 回复 分享
发布于 2021-11-03 19:34
i应该大于等于j。 #include<bits/stdc++.h> using namespace std; int main(){     int n,i,j;     cin>>n;     for(i=1;j=(n/i);i++){         if(i>=j&&i*j==n)             break;     }             cout<<j<<" "<<i;     return 0; }
点赞 回复 分享
发布于 2020-01-14 21:47
因为这样本身是符合题目意思的
点赞 回复 分享
发布于 2019-10-17 13:38

相关推荐

不愿透露姓名的神秘牛友
03-30 21:35
爱蜜莉雅碳劝退测开:裁员裁大动脉了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务