zoukankan      html  css  js  c++  java
  • #452 Div2 Problem C Dividing the numbers ( 思维 || 构造 )

    题意 : 将从 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<bits/stdc++.h>
    using namespace std;
    
    int main(void)
    {
        int n;
        while(~scanf("%d", &n)){
            if(n==3){
                puts("0
    1 3");
                continue;
            }
    
            if(n%4==0 || n%4==3) puts("0");
            else puts("1");
    
            int num = n/4 * 2 + (n%4!=0);
            printf("%d ", num);
    
            for(int i=n; i>=4; i-=4)
                printf("%d %d ", i, i-3);
            if(n%4==3) puts("3");
            else if(n%4==2 || n%4==1) puts("1");
            else puts("");
        }
    
        return 0;
    }
    View Code
  • 相关阅读:
    TStringList 常用操作(转自南山古陶)
    在Delphi中使用Indy控件实现邮件群发
    GSM手机SMS编码解码
    建别人进不了删不掉的文件夹
    播放 wav 文件
    delphi inherited,纯虚
    PDU编码规则
    sql函数
    基于GPRS的LED电子显示屏
    结对编程 队友代码分析
  • 原文地址:https://www.cnblogs.com/qwertiLH/p/8094986.html
Copyright © 2011-2022 走看看