zoukankan      html  css  js  c++  java
  • codeforces Round #440 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要尽量多取,枚举%4余数讨论一下。这篇博客讲的很不错:http://blog.csdn.net/i1020/article/details/78244053

    【代码】:

    #include <bits/stdc++.h>
    using namespace std;
    int main(){
        int n,t;
        cin>>t;
        while(t--){
            cin>>n;
            if(n<3) puts("-1");
            else if(n==5) puts("-1");
            else if(n%4==1) cout<<n/4-1<<"
    ";
            else if(n%4==0) cout<<n/4<<"
    ";
            else if(n%4==2) cout<<n/4<<"
    ";
            else if(n==7||n==11) puts("-1");
            else cout<<n/4-1<<"
    ";
        }
        return 0;
    }
    View Code
  • 相关阅读:
    怎么打jar包 jar怎么运行
    ORACLE directory 目录
    materialized view 和snapshot
    OS级别kill 进程
    ORA01843 not a valid month
    物化视图 Materialized View
    oracle数据字典
    在oracle中如何退出edit模式
    Oracle临时表
    Oracle 查看 对象 持有 锁 的情况 (添加了V$SQL视图,这样可以一起查出具体导致这种锁的SQL语句,一次性就搞定了)
  • 原文地址:https://www.cnblogs.com/Roni-i/p/7675265.html
Copyright © 2011-2022 走看看