• Codeforces Round #440 (Div. 2, based on Technocup 2018 Elimination Round 2) C. Maximum splitting


    地址:

    题目:

    C. Maximum splitting
    time limit per test
    2 seconds
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    You are given several queries. In the i-th query you are given a single positive integer ni. You are to represent ni as a sum of maximum possible number of composite summands and print this maximum number, or print -1, if there are no such splittings.

    An integer greater than 1 is composite, if it is not prime, i.e. if it has positive divisors not equal to 1 and the integer itself.

    Input

    The first line contains single integer q (1 ≤ q ≤ 105) — the number of queries.

    q lines follow. The (i + 1)-th line contains single integer ni (1 ≤ ni ≤ 109) — the i-th query.

    Output

    For each query print the maximum possible number of summands in a valid splitting to composite summands, or -1, if there are no such splittings.

    Examples
    input
    1
    12
    output
    3
    input
    2
    6
    8
    output
    1
    2
    input
    3
    1
    2
    3
    output
    -1
    -1
    -1
    Note

    12 = 4 + 4 + 4 = 4 + 8 = 6 + 6 = 12, but the first splitting has the maximum possible number of summands.

    8 = 4 + 4, 6 can't be split into several composite summands.

    1, 2, 3 are less than any composite number, so they do not have valid splittings.

    思路:

      最小合数是4,所以用4去凑就行了

     1 #include <bits/stdc++.h>
     2 
     3 using namespace std;
     4 
     5 #define MP make_pair
     6 #define PB push_back
     7 typedef long long LL;
     8 typedef pair<int,int> PII;
     9 const double eps=1e-8;
    10 const double pi=acos(-1.0);
    11 const int K=1e6+7;
    12 const int mod=1e9+7;
    13 
    14 
    15 int main(void)
    16 {
    17     int n,x,ans;cin>>x;
    18     while(x--)
    19     {
    20         scanf("%d",&n);
    21         if(n%4==0)
    22             ans=n/4;
    23         else if(n%4==1)
    24         {
    25             if(n<9)
    26                 ans=-1;
    27             else if(n==9)
    28                 ans=1;
    29             else
    30                 ans=(n-13)/4+2;
    31         }
    32         else if(n%4==2)
    33         {
    34             if(n<6)
    35                 ans=-1;
    36             else if(n==6)
    37                 ans=1;
    38             else
    39                 ans=n/4;
    40         }
    41         else
    42         {
    43             if(n<15)
    44                 ans=-1;
    45             else
    46                 ans=(n-15)/4+2;
    47         }
    48         printf("%d
    ",ans);
    49     }
    50     return 0;
    51 }
  • 相关阅读:
    记一次git fatal: Unable to find remote helper for 'https'问题的解决
    LambdaMART简介——基于Ranklib源码(二 Regression Tree训练)
    LambdaMART简介——基于Ranklib源码(一 lambda计算)
    用中文把玩Google开源的Deep-Learning项目word2vec
    Ubuntu18.04 一次性升级Python所有库
    CSAPP家庭作业(第二章)
    两个有序链表序列的合并
    sublime text 3 配置Python开发环境
    Java课程设计-泡泡堂(个人)
    二叉树的先序建立与遍历
  • 原文地址:https://www.cnblogs.com/weeping/p/7673825.html
Copyright © 2020-2023  润新知