原题链接:https://codeforces.com/contest/1176/problem/D

本文链接:https://www.cnblogs.com/blowhail/p/11146761.html

题目大意是 两个个数列 a , b 相同 ,如果 ai 是素数,那么b数列里添加上第ai个素数(2为第一个),如果不是素数,那么b数列里添加上ai的最大因子。现在给出添加完之后的b数列,求出a数列。

大致思路: 先从大到小排序,然后判断是不是素数,如果是素数,那就遍历一遍,找到它是第几个素数,然后输出并记录下来。  如果不是素数,就直接输出,再求出最大的因子记录下来。

写超时了好多次,修改了很多地方,可读性估计不太好

代码如下

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <cmath>
#define ll long long
#define pi 3.1415926
using namespace std;
int primes[200006],a[400005],b[3000005],p2[3000005];//这里primes数组按顺序记录素数,p2是 素数为1 非素数为0 //a数组是存下输入的数列,b数组是记录每个数的个数
bool cmp (int x,int y)
{return x>y;
}
void prime (int n)
{int i,t, k,j;primes[1]=2;p2[2]=1;int f,p=2;for (i=3;i<=n;++i){k=sqrt(i);f=1;for (t=2;t<=k;++t)if(i%t==0){f=0;break;}if (f){primes[p++]=i; //按顺序存p2[i]=1;       //}}
}
int main ()
{int i,t,m,n,l,k,j,p;scanf("%d",&n);j=2*n;for(i=0;i<j;++i){scanf("%d",&a[i]);b[a[i]]++; //记录每个数个数}sort(a,a+j,cmp);prime(a[0]);int c=200000; //这里我用c来记录每次遍历素数的位置,然后下一次就直接从这个位置继续遍历(因为已经从大到小排序了) for (i=0;i<j;++i){if (b[a[i]]==0) continue;if (p2[a[i]]==1){for (int h=c;h>=1;--h)if (primes[h]==a[i]){c=h;break;}
         printf("%d ",c);
        b[ a[i] ]--;  b[c]--;       //b是记录每个数出现次数,每次遍历完都把找出来的数给减去}else{printf("%d ",a[i]);for (int h=2;h<a[i];++h)if (a[i]%h==0){k=a[i]/h;break;}b[a[i]]--;b[k]--;}}printf("\n");return 0;
}

转载于:https://www.cnblogs.com/blowhail/p/11146761.html

code forces 1176 D. Recover it!相关推荐

  1. Code Forces Bear and Forgotten Tree 3 639B

    B. Bear and Forgotten Tree 3 time limit per test2 seconds memory limit per test256 megabytes inputst ...

  2. 【Code forces】63B Settlers' Training

    http://codeforces.com/problemset/problem/63/B 给你一串数字,直到所有数字都变为k为止,相同的数为一组,在一次中,所有不同的数都加1 1 2 2 3  →  ...

  3. Code Forces 448C Painting Fence 贪婪的递归

    略有上升称号,最近有很多问题,弥补啊,各类竞赛滥用,来不及做出了所有的冠军.这个话题 这是一个长期记忆的主题.这是不是太困难,基本技能更灵活的测试,每次我们来看看这个问题可以被删除,处理然后分段层,贪 ...

  4. code forces 436 C. Bus

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

  5. Code Forces 652C Foe Pairs

    C. Foe Pairs time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  6. Code forces 103A---Testing Pants for Sadness

    点击打开链接 A. Testing Pants for Sadness time limit per test 2 seconds memory limit per test 256 megabyte ...

  7. Anti-If: The missing patterns--转

    原文地址:http://code.joejag.com/2016/anti-if-the-missing-patterns.html Around 10 years ago I encountered ...

  8. android分辨率 x y,Android - 确定不同分辨率的位图上的特定位置(X,Y坐标)?

    我正在尝试创建的应用程序是棋盘游戏.它将有一个位图作为棋盘和棋子,移动到棋盘上的不同位置.该板的一般设计是方形的,具有一定数量的行和列,并具有用于外观的边框.想象一下国际象棋棋盘或拼字游戏板.Andr ...

  9. 宝剑锋从磨砺出——使用在线评测平台磨砺C#使用能力

    学数学的时候,我们通常会通过大量的练习题来巩固所学知识:其实学习程序设计设计语言也不例外.那么如何通过练习去磨砺自己的C#使用能力呢?一个方法是参与到实际的软件项目开发中,而另一个更加直接的方法则是& ...

  10. 算法与数据结构学习路线

    随着科学技术的发展,人工智能已经逐渐渗透到各个行业,这是一个相当有前景的专业领域. 其中,算法工程师这一职位更是非常火爆,在急缺大量人才的同时,也吸引了众多求职者,那么,初学者该如何学好算法呢? 算法 ...

最新文章

  1. [CF 392 Div.1 D]Three Arrays
  2. free是自由,不是免费,从王开源说起
  3. hdu4717 三分(散点的移动)
  4. SpringBoot 热部署
  5. 浏览器和服务器交互原理?(请求--响应的过程)
  6. bianma 水平 技巧
  7. STL中algorithm里的查找
  8. 《CUDA C编程权威指南》——2.4节设备管理
  9. IOS 公共类-数字处理
  10. linux wc -l命令,Linux wc sort和uniq的用法
  11. ubuntu安装hexo博客
  12. 利用xposed自动获得微信个人收款二维码链接和收款记录
  13. 9260ac网卡linux驱动,intel wireless-ac 9260 driver
  14. Mac 如何安装tomcat
  15. SpringBoot 发送邮件功能(包含网易、QQ、Gmail邮箱)
  16. 电视盒子系统是安卓还是yunOS,三招快速弄清
  17. img服务器上的图片不显示不出来,img标签使用绝对路径无法显示图片
  18. w10的计算机图标在桌面显示,一学就会的win10桌面怎么显示我的电脑图标方法
  19. SQL中DATEADD用法
  20. 8.3.1 修改数据表名称

热门文章

  1. 面试机试之求解字符串熵值
  2. https验证失败+Android,okhttpSSL证书验证失败有关问题
  3. 2021-06-16单例模式详解
  4. Executors 工具类,三大方法
  5. C++ 单元测试框架 Boost Test BOOST_AUTO_TEST_CASE
  6. thinkphp5 insertAll 插入的数据列不对 对应关系不对
  7. Leetcode130. 被围绕的区域(深搜)
  8. mysql操作--json/数组 的增删该查
  9. JDBC学习(四、DAO思想和重构设计上)
  10. golang 包管理工具