标签:
3 12 0
2 7
思路:
给定一个数n,在1+2+3+4+…+k中,求随意改变加减号能使其和(差)正好为n的k为多少,使得k最小。解题思路:每次累加i:如果sum小于n则无论如何也不可能达到题意;如果sum正好等于n则累加到这个k正好为答案;如果sum大于n时,则需要把前面的加号改为减号:如果改为-1,结果就减2,如果改为-2,结果就减4,以此类推,可以看出只要sum-n为偶数,则此时可以改sum结果为n,得答案。代码:
#include<stdio.h> int main() { int n,i,t; while(scanf("%d",&n)&&n) { i=1; t=1; while(t!=n) { i++; t=i*(i+1)/2; if(t>n) { if((t-n)%2==0) t=n; } } printf("%d\n",i); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/qq_16997551/article/details/47210529