前天去面试的一道上机测试题(凭记忆写的题目)
Question:
给定输入整数\(\left( k \right)\),找到最小的自然数\(n\left( {n \ge 1} \right)\),使得下列公式成立:
\[?1?2 \cdots ?n = k\]其中\(?\)可以是\({\rm{ + }}\)(加号)或者\( - \)(减号),输出\(n\)以及完整的表达式(可以不唯一)。
Example:
Input:12
Output:
7
-1+2+3+4+5+6-7=12
Solution:

  1. #include<iostream>
  2. #include<vector>
  3. #include<math.h>
  4. using namespace std;
  5. int main()
  6. {
  7. cout<<"please input K:"<<endl;
  8. int k;
  9. cin>>k;
  10. int m=k;
  11. int n=;
  12. while(n)
  13. {
  14. if(abs(k)%== && (n*(n+)/)%== && abs(k)<=(n*(n+)/))
  15. break;
  16. else if(abs(k)%== && (n*(n+)/)%== && abs(k)<=(n*(n+)/))
  17. break;
  18. else
  19. n++;
  20. }
  21. //下面开始计算每个数字前面的正负号
  22. vector<int> data;
  23. vector<char> operators;
  24. for(int i=;i<=n;i++)
  25. data.push_back(i);
  26. int max;
  27. for(int j=n;j>=;j--)
  28. {
  29. max=(j*(j+)/);
  30. if((max-k) >= (*data[j-]))
  31. {
  32. operators.push_back('-');
  33. k=k+data[j-];
  34. }
  35. else
  36. {
  37. operators.push_back('+');
  38. k=k-data[j-];
  39. }
  40. }
  41. cout<<n<<endl;
  42. for(int p=;p<n;p++)
  43. {
  44. cout<<operators[n--p]<<data[p];
  45. }
  46. cout<<"="<<m<<endl;
  47. return ;
  48. }

一道program test题目的更多相关文章

  1. 一道有关switch-case题目

    一道有关switch-case题目 /** * * @title:SwitchCase.java * @Package:com.you.hbxs.model * @Description:<h3 ...

  2. ES6原生Promise的所有方法介绍(附一道应用场景题目)

    JS的ES6已经出来很久了,作为前端工程师如果对此还不熟悉有点说不过去.不过如果要问,Promise原生的api一共有哪几个?好像真的可以难倒一票人,包括我自己也忽略了其中一个不常用的API Prom ...

  3. 一道原生js题目引发的思考(鼠标停留区块计时)

    我瞎逛个啥论坛,发现了一个题目,于是本着练手的心态就开始写起来了,于是各种问题接踵而至,收获不小. 题目是这样的: Demo: mouseenter与mouseover区别demo 跨浏览器的区块计数 ...

  4. 刷题——一道全排列的题目(Permutations)

    题目内容: 思路其实很简单,那就是暴力交换顺序,直接迭代出所有可能.先在一个位置固定一个数字,然后对剩下的数字进行排列,用同样的方法对剩下的数字进行排列(因此要用到递归,不用也行,但是会复杂一点,这里 ...

  5. 关于Java的一道内存的题目

    import java.util.Arrays; import java.util.EmptyStackException; public class MyStack<T> { priva ...

  6. 一道lambda表达式题目

    #include <iostream> #include <functional> using namespace std; auto Pair = [](auto u, au ...

  7. 一道java笔试题目:Vector和ArrayList的区别

    Vector和ArrayList的区别 线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构这些类均在java.util包中本文试图通过 ...

  8. 分享一道我认为非常有思考价值JavaScript题目

    这是一道综合性的题目,如果你能快速清晰的分析整理出来,那我相信你对JavaScript是有一定的理解的了.我会先将题目的图片截取出来,供大家思考,在结尾在给出我的分析过程和答案,作个总结. 好,废话不 ...

  9. 一道C语言安全编码题目

    1.前言 最近在网上看到一道C语言题目,用C语言实现一个函数,给定一个int类型的整数,函数输出逆序的整数,例如输入123,则输出字符串"321",,输入-123,则输出字符串&q ...

随机推荐

  1. sream bytes[] img相互转换

    /// <summary> /// 将 Stream 转成 byte[] /// </summary> /// <param name="stream" ...

  2. 深入浅出ES6(十):集合

    作者 Jason Orendorff  github主页  https://github.com/jorendorff 前段时间,官方名为“ECMA-262,第六版,ECMAScript 2015语言 ...

  3. FastJson与Gson小测试

    最近用到Json来传输数据,找到两个比较简单的工具 Gson 和 FastJson随便测试一下两个工具的效率~ 1 package com.json.fast; import java.util.Ar ...

  4. lintcode:两数组的交 II

    题目 计算两个数组的交 注意事项 每个元素出现次数得和在数组里一样答案可以以任意顺序给出 样例 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2]. 解题 ...

  5. 一个字典通过dictionaryWithDictionary 他们的内存指针是不同的

    一个字典通过dictionaryWithDictionary 他们的内存指针是不同的  来自为知笔记(Wiz)

  6. Qt中的键盘事件,以及焦点的设置(比较详细)

    Qt键盘事件属于Qt事件系统,所以事件系统中所有规则对按键事件都有效.下面关注点在按键特有的部分: focus 一个拥有焦点(focus)的QWidget才可以接受键盘事件.有输入焦点的窗口是活动窗口 ...

  7. CreateProcess启动隐藏的外部程序(其实就是CreateDesktop,然后指定STARTUPINFO.lpDesktop)

    HDESK hDesk = CreateDesktop(_T("MyDesk"), NULL, NULL, 0, GENERIC_ALL, NULL); ASSERT(hDesk) ...

  8. wordpress自定义栏目

    开启自定义栏目:点击头顶的“显示选项”,勾选“自定义栏目” 然后编辑文章时,即可看见 实验: 定义名称为:play_url ,值为:http://www.xiami.com/widget/635357 ...

  9. DB2 基本概念

    DB2基本概念——实例,数据库,模式,表空间   DB2支持以下两种类型的表空间:     1. 系统管理存储器表空间(SMS-SYSTEM   MANAGED   STORAGE)     2. 数 ...

  10. CentOS查看内核版本,位数,版本号

    1)[root@localhost ~]# cat /proc/version Linux version 2.6.18-194.el5 (mockbuild@builder10.CentOS.org ...