.LAL. 2022-08-21 10:25 采纳率: 95%
浏览 45
已结题

c++变化的x,编译问题

对2 以上(包括 2)n 以下(包括 n)的正整数x 可以进行以下操作。

如果x+1<=n,x+1可变为新的x

如果sqrt(x)为整数,sqrt(x)可变为新的x

小明想知道从x=2开始,将所有允许的操作都执行至少一遍,使x 的值再次为2的方法中,操作

次数最少的方法的操作次数.

你的任务就是判断这样的方法是否存在,如果存在,则输出最小操作次数。

输入 1行, 1个整数 n。

输出 1行最小操作次数。当不存在符合条件的方法时输出-1。

输入

9
输出

10
输入

5
输出

-1
输入
1000000
输出

333333999
这是我的代码:

#include <iostream>
#include <cstdio>
#include<algorithm>
using namespace std;
int a[100];
int b[100];
int main(){
//    freopen("bhdx.in","r",stdin);
//    freopen(“bhdx.out","w",stdout);
    int n;
    cin>>n;
int x=2,sum=0;


    for(int i=0;i<=10000;i++){
if(x+1<=n){
    x=x+1;
    sum++;
}
else return 0;
if(x==2){
    break;
}
if(sqrt(x)%2==0){
    x=sqrt(x);
    sum++;
}
    }
cout<<sum;

    
    fclose(stdin);
    fclose(stdout);
    
    return 0;
}

这个从书上看到的不知道怎么解决,谁能帮一下,编译错误了,不太明白题意

  • 写回答

2条回答 默认 最新

  • 雨下,听风 2022-08-21 13:20
    关注

    改动:1用sqrt需要cmath函数;

    2.你24行总报错,我帮你改了一下,应该同等,意思是平方根的值(系统保留整数)是否与平方根的值的floor相等

    ps:注意程序还是通不过样例

    
    #include<iostream>
    #include <cstdio>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    int a[100];
    int b[100];
    int main(){
    //    freopen("xlh.in","r",stdin);
    //    freopen("xlh.out","w",stdout);
        int n;
        cin>>n;
    int x=2,sum=0;
     
     
        for(int i=0;i<=10000;i++){
    if(x+1<=n){
        x=x+1;
        sum++;
    }
    else return 0;
    if(x==2){
        break;
    }
    if(sqrt(x)==floor(sqrt(x))){
        x=sqrt(x);
        sum++;
    }
        }
    cout<<sum;
     
        
        fclose(stdin);
        fclose(stdout);
        
        return 0;
    }
     
    
    采纳一下,开心一夏!
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月30日
  • 已采纳回答 8月22日
  • 修改了问题 8月21日
  • 修改了问题 8月21日
  • 展开全部

悬赏问题

  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划