uva10025 The ? 1 ? 2 ? ... ? n = k problem
来源:互联网 发布:大数据特征 5v 编辑:程序博客网 时间:2024/06/07 08:31
10025 The ? 1 ? 2 ? … ? n = k problem
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
首先预处理下,然后找到题目给出的计算结果位于的区间,由于数列中使用减号可以组合出任意的偶数,所以就查找与答案差的值为偶数的最小的那个数
#include<iostream>#include<algorithm>#include<map>#include<cstdio>#include<cstdlib>#include<vector>#include<cmath>#include<cstring>#include<string>using namespace std;const int maxn=54723;typedef long long LL;LL sum[maxn];void work(LL n){ if(n==0){printf("3\n");return ;} if(n<0)n=-n; int high=lower_bound(sum,sum+maxn,n)-sum; int ans=high; while((sum[ans]-n)%2!=0)ans++; printf("%d\n",ans);}int main(){// #ifndef ONLINE_JUDGE// freopen("Text//in.txt","r",stdin);// #endif // ONLINE_JUDGE sum[0]=0; for(int i=1;i<maxn;i++){ sum[i]=sum[i-1]+(LL)i; } int T; scanf("%d",&T); while(T--){ LL n; scanf("%lld",&n); work(n); if(T>0)puts(""); } return 0;}/*Sample Input212-3646397Sample Output72701*/
- UVA10025 The ? 1 ? 2 ? ... ? n = k problem
- UVA10025(The ? 1 ? 2 ? ... ? n = k problem)
- uva10025 The ? 1 ? 2 ? ... ? n = k problem
- The ? 1 ? 2 ? ... ? n = k problem
- The ? 1 ? 2 ? ... ? n = k problem
- The ? 1 ? 2 ? ... ? n = k problem
- The ? 1 ? 2 ? ... ? n = k problem
- The ? 1 ? 2 ? ... ? n = k problem
- The ? 1 ? 2 ? ... ? n = k problem
- The ? 1 ? 2 ? ... ? n = k problem
- UVa 10025 - The ? 1 ? 2 ? ... ? n = k problem
- uva 10025 The ? 1 ? 2 ? ... ? n = k problem
- Uva 10025 - The ? 1 ? 2 ? ... ? n = k problem
- uva 10025 The ? 1 ? 2 ? ... ? n = k problem
- uva 10025 - The ? 1 ? 2 ? ... ? n = k problem
- UVa 10025 - The ? 1 ? 2 ? ... ? n = k problem
- UVA - 10025 :The ? 1 ? 2 ? ... ? n = k problem
- 10025 - The ? 1 ? 2 ? ... ? n = k problem
- TypedValue.applyDimension
- ActiveX 方法和事件
- EJB到底为何物?
- 可重入代码
- [Android自定义控件] Android自定义控件
- uva10025 The ? 1 ? 2 ? ... ? n = k problem
- Hibernate SQL 方言(hibernate.dialect)
- 交互原型设计
- uva 591 Box of Bricks
- 安装tomcat for Mac
- 2012年5月SAT香港真题解析
- lamp review (add)
- VS2013找不到SDKDDKVer.h
- 格斗游戏如何实现同步?