前天去面试的一道上机测试题(凭记忆写的题目)
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:

#include<iostream>
#include<vector>
#include<math.h>
using namespace std;
int main()
{
cout<<"please input K:"<<endl;
int k;
cin>>k;
int m=k;
int n=;
while(n)
{
if(abs(k)%== && (n*(n+)/)%== && abs(k)<=(n*(n+)/))
break;
else if(abs(k)%== && (n*(n+)/)%== && abs(k)<=(n*(n+)/))
break;
else
n++;
}
//下面开始计算每个数字前面的正负号
vector<int> data;
vector<char> operators;
for(int i=;i<=n;i++)
data.push_back(i);
int max;
for(int j=n;j>=;j--)
{
max=(j*(j+)/);
if((max-k) >= (*data[j-]))
{
operators.push_back('-');
k=k+data[j-];
}
else
{
operators.push_back('+');
k=k-data[j-];
}
}
cout<<n<<endl;
for(int p=;p<n;p++)
{
cout<<operators[n--p]<<data[p];
}
cout<<"="<<m<<endl;
return ;
}

一道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. js:字符串(string)转json

    第一种方式: 使用js函数eval(); testJson=eval(testJson);是错误的转换方式. 正确的转换方式需要加(): testJson = eval("(" + ...

  2. JAVA类型信息——Class对象

    JAVA类型信息——Class对象 一.RTTI概要 1.类型信息RTTI :即对象和类的信息,例如类的名字.继承的基类.实现的接口等. 2.类型信息的作用:程序员可以在程序运行时发现和使用类型信息. ...

  3. Changing the Overridden Method’s Characteristics

    修改重写方法的特征 在大多数情况下,我们重写(override)一个 virtual 方法是为了改变它的实现.然后,有时我们却想改变该 virtual 方法的其他的特征,这往往会带来一系列问题. 1) ...

  4. BZOJ 1015: [JSOI2008]星球大战starwar 并查集

    1015: [JSOI2008]星球大战starwar Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝 ...

  5. Shell练习 验证号码

    原文: https://leetcode.com/problems/valid-phone-numbers/ Given a text file file.txt that contains list ...

  6. web.xml配置bug之提示The content of element type "web-app" must match "(icon?,display- name?,description?,distributable?,

    错误:配置web.xml时,出现红色叉叉,提示 The content of element type "web-app" must match "(icon?,disp ...

  7. linux rpm命令

    1.rpm 是红帽(RedHat)软件包管理工具,实现类似于 Windows 中的添加/删除程序功能. 2.rpm -ivh 软件包名 安装软件包并显示安装进度.这个是用得最多的了. 3. rpm - ...

  8. UITableview刷新某一个cell或section

    //一个section刷新 NSIndexSet *indexSet=[[NSIndexSet alloc]initWithIndex:2]; [tableview reloadSections:in ...

  9. Struts2笔记——通配符和动态方法调用

     通配符映射 * 一个 Web应用可能有成百上千个 action 声明. 可以利用 struts提供的通配符映射机制把多个彼此相似的映射关系简化为一个映射关系 * 通配符映射规则     > 若 ...

  10. eclipse运行mapreduce报错Permission denied

    今天用在eclipse-hadoop平台上运行map reduce(word count)出错了,错误信息为 org.apache.hadoop.security.AccessControlExcep ...