【Codeforces Round #440 (Div. 2) C】 Maximum splitting
来源:互联网 发布:三国志10武将资料数据 编辑:程序博客网 时间:2024/06/05 01:59
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.
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.
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.
112
3
268
12
3123
-1-1-1
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的情况 ,分三种情况讨论即可 具体见代码注释
#include <bits/stdc++.h>using namespace std;int solve(int x){ int t = x/4; //最多分成t个4 int rest = x%4; //求出剩余部分 if (rest==0) //刚好整除4 t就是最大值返回 return t; if (rest==1) //余1 咋办 取出一个4 发现4+1=5 不是合数 那就取出两个 4*2+1=9 是合数 那么就9了 { if (t>=2) { t-=2; }else return -1; t++; return t; } if (rest==2) //同理 余2 取出一个4 发现4+2=6是合数 那就取出一个就行 { if (t>=1) { t--; }else return -1; t++; return t; } if (rest==3) //同理 取出3个4 3*4+3=15是合数 { if (t>=3) { t-=3; }else return -1; t+=2; return t; //返回t }}int main(){ //freopen("F:\\rush.txt","r",stdin); int q; scanf("%d",&q); for (int i = 1;i <= q;i++) { int x; scanf("%d",&x); printf("%d\n",solve(x)); } return 0;}
- 【Codeforces Round #440 (Div. 2) C】 Maximum splitting
- Codeforces Round #440 (Div. 2)C. Maximum splitting
- Codeforces Round #440 (Div. 2) C. Maximum splitting
- Codeforces Round #440 (Div. 2,)-数学&规律- Maximum splitting
- Codeforces Round #440 div2 C. Maximum splitting
- Codeforces Round #440 C. Maximum splitting
- Codeforces Round #440 (Div. 1) A. Maximum splitting
- C. Maximum splitting--codeforces
- codeforces 870C Maximum splitting
- codeforces 870C. Maximum splitting
- CodeForces 872C Maximum splitting
- A. Lesha and array splitting Codeforces Round #390 (Div. 2)
- Codeforces Round #390 (Div. 2)A Lesha and array splitting
- [Codeforces Round #452 (Div. 2)] Splitting in Teams
- Codeforces Round #124 (Div. 2) / C. Lexicographically Maximum Subsequence
- Codeforces Round #205 (Div. 2) C. Find Maximum
- Codeforces Round #205 (Div. 2) / 353C Find Maximum (贪心)
- Codeforces 872 C Maximum splitting(规律)
- Docker下的Kafka学习之一:制作集群用的镜像文件
- Nodejs学习(六)--异步流控制
- 数据库
- LeetCode Exercise 5: Trapping Rain Water
- 7-9 龟兔赛跑(20 分)
- 【Codeforces Round #440 (Div. 2) C】 Maximum splitting
- 串口工具minicom的使用方法
- Maven-环境搭建以及建立Maven项目
- 3.1.1多线程通讯(等待通知机制)
- 文章标题
- JSP 笔记 (一 : 语法 与 运行 原理)
- 用insert into插入select结果时插入固定值
- URAL1297-Palindrome
- C语言标准库之 <assert.h>