[codeforces] 449C Jzzhu and Apples
原题
质因数分解后贪心即可(最后贪2)
#include<cstdio>
#include<vector>
#include<stack>
#include<vector>
#include<cstring>
#define N 100010
using namespace std;
bool is[N],mk[N];
int prime[N],num=1,cnt,n,a,b;
stack <int> ans;
vector <pair <int,int> > v;
int main()
{
memset(is,1,sizeof(is));
for (int i=2;i<=100000;i++)
{
if (is[i]) prime[++cnt]=i;
for (int j=1;j<=cnt && i*prime[j]<=100000;j++)
{
is[i*prime[j]]=0;
if (i%prime[j]==0) break;
}
}
scanf("%d",&n);
for (int i=2;i<=cnt && prime[i]<=n;i++)
{
num=1;
while(!ans.empty()) ans.pop();
ans.push(prime[i]);
mk[prime[i]]=1;
for (int j=3*prime[i];j<=n;j+=prime[i])
{
if (mk[j]) continue;
mk[j]=1;
ans.push(j);
num++;
}
if (num&1 && 2*prime[i]<=n && !mk[2*prime[i]])
{
mk[2*prime[i]]=1;
ans.push(2*prime[i]);
}
while (ans.size()>1)
{
a=ans.top();
ans.pop();
b=ans.top();
ans.pop();
v.push_back(make_pair(a,b));
}
}
while(!ans.empty()) ans.pop();
num=0;
for (int i=2;i<=n;i+=2)
{
if (mk[i]) continue;
ans.push(i);
mk[i]=1;
}
while (ans.size()>1)
{
a=ans.top();
ans.pop();
b=ans.top();
ans.pop();
v.push_back(make_pair(a,b));
}
int s=v.size();
printf("%d\n",s);
for (int i=0;i<s;i++)
printf("%d %d\n",v[i].first,v[i].second);
return 0;
}
[codeforces] 449C Jzzhu and Apples的更多相关文章
- Codeforces 449C Jzzhu and Apples 贪心 (看题解)
Jzzhu and Apples 从大的质因子开始贪心, 如果有偶数个则直接组合, 如果是奇数个留下那个质数的两倍, 其余两两组合. #include<bits/stdc++.h> #de ...
- Codeforces Round #257 (Div. 2) E题:Jzzhu and Apples 模拟
E. Jzzhu and Apples time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Codeforces 449.C Jzzhu and Apples
C. Jzzhu and Apples time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Codeforces 450E:Jzzhu and Apples(构造,数学)
E. Jzzhu and Apples time limit per test: 1 seconds memory limit per test: 256 megabytes input: stand ...
- CF449C Jzzhu and Apples (筛素数 数论?
Codeforces Round #257 (Div. 1) C Codeforces Round #257 (Div. 1) E CF450E C. Jzzhu and Apples time li ...
- CF449 C. Jzzhu and Apples
/* http://codeforces.com/problemset/problem/449/C cf 449 C. Jzzhu and Apples 数论+素数+贪心 */ #include &l ...
- CodeForces 450B Jzzhu and Sequences (矩阵优化)
CodeForces 450B Jzzhu and Sequences (矩阵优化) Description Jzzhu has invented a kind of sequences, they ...
- CF 450E Jzzhu and Apples 数学+模拟
E. Jzzhu and Apples time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Codeforces C. Jzzhu and Cities(dijkstra最短路)
题目描述: Jzzhu and Cities time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
随机推荐
- python基础回顾笔记
1.知道了什么是编程语言 2.知道了python.C#.Java都是语言的种类 3.python:有很多种 cpython.pypy.jpython... 4.python的执行方式有两种: 解释器 ...
- C语言数组篇(一)一维数组
0. 数组的两种表现形式 一种是常见的a[10]; //初学者常用 另一种是用指针表示的数组. //实际工程使用.常用于参数传递 ...
- 最小生成数kruskal算法和prim算法
定义 连通图:在无向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该无向图为连通图. 强连通图:在有向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该有向图为强连通图. 连通网:在 ...
- 寻找物体的凸包 opencv
凸包的含义: 在二维平面上给定点集,凸包就是将最外层的点连接起来构成的凸多边形.并且这个凸多边形能包含点集中所有的点.OPENCV中: convexHull函数用于寻找图像点集中的凸包.它有六个输入参 ...
- string函数Contains()实例
public bool Contains(string value)如果值参数出现在此字符串内,或者值为空字符串(“”),则为true; 否则为false using System; class Ex ...
- Android学习记录(8)—Activity的四种加载模式及有关Activity横竖屏切换的问题
Activity有四种加载模式:standard(默认), singleTop, singleTask和 singleInstance.以下逐一举例说明他们的区别: standard:Activity ...
- 二分查找iOS
二分查找(也称折半查找)是很常见的一种在数组中查找数据的算法,作为一名程序员是应该必须会的.它的基础思想:获取数组的中间值,将数组分割成两份,利用查找的值跟中间值进行比较,如果查找的值大于中间值,就在 ...
- LeetCode - Merge Interval.
Merge Intervals 2014.2.26 21:28 Given a collection of intervals, merge all overlapping intervals. Fo ...
- Django笔记 —— MySQL安装
最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...
- 19、AngularJs知识点总结 part-1
1.AngularJs AngularJs是一款JavaScript开源库,由Google维护,用来协助单一页面应用程序: AngularJs的目标是通过MVC模式增强基于浏览器的应用,使开发和测试变 ...