Given the following formula, one can set operators ‘+’ or ‘-’ instead of each ‘?’, in order to obtain a given k

?1?2? . . .?n = k For example: to obtain k = 12, the expression to be used will be: - 1 + 2 + 3 + 4 + 5 + 6 - 7 = 12 with n = 7 **Input** The first line is the number of test cases, followed by a blank line.     Each test case of the input contains an integer k (0 ≤ |k| ≤ 1000000000).     Each test case will be separated by a single line. **Output** For each test case, your program should print the minimal possible n (1 ≤ n) to obtain k with the above formula.     Print a blank line between the outputs for two consecutive test cases. **Sample Input** 2 12 -3646397 **Sample Output** 7 2701

问题链接:UVA10025 The ? 1 ? 2 ? … ? n = k problem
问题简述:(略)
问题分析
    给定一个整数k,找一个最小的n,使得在1-n(按顺序)这n个数的前面加上-或+,使得表达式的结果值为k。例如:因为0=1+2-3,当k=0时,n为3;因为1=-1+2,当k=1时,n为2;因为2=1-2+3,当k=2时,n=3。当k<0时,n的值与-k的情况是一样的,因为只需要将1-n的各个值取负就得到负数了。
    这个题是一个数学规律题。k=0时,需要特殊考虑,即n=3。k<0时则按-k进行计算即可。对于给定的正整数k,令s=1+2+…+n,那么至少需要保证s>=k。对于满足s>=k的n,若s-k=0则n就是所求的结果;若s-k为偶数则将(s-k)/2之前置为-,其他数之前置为+,则n为所求结果;若s-k为奇数则继续增大n再行判定。
程序说明:(略)
参考链接:(略)
题记:(略)

AC的C++语言程序如下:

/* UVA10025 The ? 1 ? 2 ? ... ? n = k problem */#include <bits/stdc++.h>using namespace std;int main()
{int t, k;scanf("%d", &t);while(t--) {scanf("%d", &k);if(k == 0)printf("3\n");else {if(k < 0) k = -k;int sum = 0, n = 0;while(sum < k) sum += ++n;      // 必要条件:1-n之和>=kwhile((sum - k) % 2 == 1) sum += ++n;   // 差值为奇数时继续增大n,否则将差值/2变为负即可printf("%d\n", n);}if(t) printf("\n");}return 0;
}

UVA10025 The ? 1 ? 2 ? ... ? n = k problem【数学规律】相关推荐

  1. 【算法学习笔记】73.数学规律题 SJTU OJ 1058 小M的机器人

    Description 小M有很多个机器人,他们要么一直说真话,要么一直说假话. 然后每个人都说: (1). 不到N个人比我工作得多 (2). 至少M个人的工资比我高. 保证没有两个人的工作一样重,也 ...

  2. UVA11774 Doom‘s Day【数学规律+GCD】

    We all know about the legend of tower of Hanoi. It is said that the world will end after finishing t ...

  3. 用Python解中考数学规律题

    用Python解中考数学规律题 以下为2018成都市的中考数学真题B卷第23题: 分析:   一.这是一道常规的找规律考题,一般每年的中考数学都会涉及,根据题的难易程度,位置一般会出现在B卷的第二题, ...

  4. 1235813找规律第100个数_2018年中考数学规律探索题(中考找规律题目-有答案)

    <2018年中考数学规律探索题(中考找规律题目-有答案)>由会员分享,可在线阅读,更多相关<2018年中考数学规律探索题(中考找规律题目-有答案)(16页珍藏版)>请在金锄头文 ...

  5. GCD XOR UVA - 12716 ——筛法建立约数表+xor运算+数学规律

    Think: 1埃式筛法思想建立约数表 2初始打表寻找运算的数学规律 3xor运算(不带进位的二进制加法) 运算法则 1. a ⊕ a = 0 2. a ⊕ b = b ⊕ a 3. a ⊕b ⊕ c ...

  6. 【leetcode-Python】-找数学规律-LCP 29. 乐团站位

    题目链接 https://leetcode-cn.com/problems/SNJvJP/ 题目描述 某乐团的演出场地可视作 num * num 的二维矩阵 grid(左上角坐标为 [0,0]),每个 ...

  7. UVA10162 Last Digit【数学规律】

    Give you a integer number N (1 ≤ n ≤ 2 ∗ 10100). Please compute S = 11 + 22 + 33 + . . . + NN Give t ...

  8. 【LeetCode】﹝数学规律ி﹞第N位数字、可怜的小猪

    [LeetCode]﹝数学规律ி﹞第N位数字.可怜的小猪 文章目录 [LeetCode]﹝数学规律ி﹞第N位数字.可怜的小猪 乐团站位★ 罗马数字转整数★ 整数转罗马数字★★ 第 N 位数字★★ 数字 ...

  9. 快乐数之数学规律解题

    数学规律解决快乐数 题目 编写一个算法来判断一个数 n 是不是快乐数. 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这 个过程直到这个数变为 1,也可能是 ...

最新文章

  1. 使用ajax方法实现form表单的提交
  2. 让Keras更酷一些:中间变量、权重滑动和安全生成器
  3. tp5.0路由route.php,thinkphp5.1使用Route路由
  4. linux虚拟地址被大量占用,《Linux中为什么要使用虚拟地址》
  5. lfcp——PB使用
  6. 如何找到Eclipse左侧项目栏
  7. 解决Zend OPcache huge_code_pages: mmap(HUGETLB) fail
  8. 贪心策略——哈夫曼编码
  9. Leetcode每日一题:136.single-number(只出现一次的数字)
  10. C#制作QQ截图的自动框选功能的个人思路(二)设置Hook
  11. 2018/2/11 ELK技术栈之ElasticSearch学习笔记二
  12. 纯新手DSP编程--5.21--CCS高级工具的使用
  13. BZOJ3674: 可持久化并查集加强版
  14. iOS经典讲解之Apple Pay开发
  15. 单片机控制步进电机程序c语言正反转停止,51单片机步进电机正反转停止实验-C51源代码...
  16. 【光模块、光接口及光纤知识】
  17. ant linux版本下载安装,linux下ant的安装
  18. MarkDown表格合并
  19. Tableau学习摘录总结①(层次、聚合度和颗粒度层次、聚合度和颗粒度,字段(离散和连续),小建议)
  20. 福玛特机器人怎么开机_五一解放双手的选择 福玛特扫地机器人解救你

热门文章

  1. GDAL读写矢量文件——C#
  2. 使用Python批量下载数据
  3. JavaWeb知识总结
  4. 开源GIS(七)——openlayers中单击获取要素(深度好文)
  5. VSCode插件开发全攻略
  6. Unity3D的50个技巧:Unity3D最佳实践
  7. vc中操作Xml--使用CMarkup类
  8. matlab自带的信号,实验一 连续时间信号在MATLAB中的表示..ppt
  9. 四、Mysql安装多实例
  10. JDK8高性能队列“Disruptor“