题意 : 将从 1 ~ n 的数分成两组,要求两组和的差值尽可能小,并输出其中一组的具体选数情况
分析 : 如果将这 n 个数从大到小四个一组来进行选择的话那么差值就为 0 ,然后再来考虑 n%4 != 0 的情况。举个例子就是 n = 9 的时候,我们考虑 6 7 8 9 ,将6、9放入一组,7、8放入第二组,那么此时差值就会为 0 ,接下来再对 2 3 4 5 进行同样的取法此时差值仍为 0 ,最后剩下一个 1 ,很显然最后的最小差值应当为 1 。其实综合考虑一下 n%4 != 0 的情况只有 4 种,只有 n%3==3 or 0 的时候差值才能为 0 否则为 1,接下来只要模拟取的过程即可。
#include
using namespace std;
int main(void)
{
int n;
while(~scanf("%d", &n)){
){
puts("0\n1 3");
continue;
}
== || n%==) puts(");
");
\* + (n%!=);
printf("%d ", num);
; i-=)
printf();
==) puts(");
== || n%==) puts(");
else puts("");
}
;
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章