• Codeforces 872C Maximum splitting:数学【分解成合数之和】


    题目链接:http://codeforces.com/contest/872/problem/C

    题意:

      给你一个数n,问你最多能将n分解成多少个合数之和。(若不能分解,输出-1)

    题解:

      若要让合数个数最多,则n必定只由4,6,9组成。

      n由n/4和n%4两部分组成。

      四种情况:

        (1)n%4 == 0:

          全分成4就好了,所以ans = n/4

        (2)n%4 == 1:

          剩下的1要和两个4组合成一个9。

          所以如果n/4 >= 2,ans = n/4 - 1

          否则ans = -1

        (3)n%4 == 2:

          剩下的2要和一个4组合成一个6。

          所以如果n/4 >= 1,ans = n/4

          否则ans = -1

        (4)n%4 == 3:

          剩下的3 = 1 + 2。所以需要三个4,组成一个6和一个9。

          所以如果n/4 >= 3,ans = n/4 - 1

    AC Code:

     1 #include <iostream>
     2 #include <stdio.h>
     3 #include <string.h>
     4 
     5 using namespace std;
     6 
     7 int n,t;
     8 
     9 int main()
    10 {
    11     cin>>t;
    12     while(t--)
    13     {
    14         cin>>n;
    15         if(n%4==0) cout<<n/4<<endl;
    16         else if(n%4==2)
    17         {
    18             if(n/4>=1) cout<<n/4<<endl;
    19             else cout<<-1<<endl;
    20         }
    21         else if(n%4==1)
    22         {
    23             if(n/4>=2) cout<<n/4-1<<endl;
    24             else cout<<-1<<endl;
    25         }
    26         else
    27         {
    28             if(n/4>=3) cout<<n/4-1<<endl;
    29             else cout<<-1<<endl;
    30         }
    31     }
    32 }
  • 相关阅读:
    linux下最简单的端口转发工具
    FRP 简单入门安装配置教程
    Linux上创建SSH隧道
    微信公众平台 · 小程序文档
    windows 10
    高清方法生成缩略图函数
    用python的turtle画图
    python安装包下载
    nginx 报invalid pid number
    derby数据库windows自带的客户端
  • 原文地址:https://www.cnblogs.com/Leohh/p/7673781.html
Copyright © 2020-2023  润新知