zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    python基础(常量,数据类型,if)
    c字符串操作函数
    磁盘读写,合并排序字符串
    5个学生,3门成绩,输入信息,保存到文件
    关于MQTT、HTTP、WebService
    循环队列Circular Queue
    ISR中断服务程序
    PID控制
    Linux定时器接口
    Embedded Agent
  • 原文地址:https://www.cnblogs.com/weeping/p/7673825.html
Copyright © 2011-2022 走看看