您的位置:首页 > 其它

低调低调

2015-06-01 23:02 162 查看


Description

Staginner总是喜欢把自已的名字写在他出的题目里。CSU-ACM协会的会长想,这孩子是不是想出名想疯了,于是决定考一考他。

任意正整数N,不大于N且与N互质的正整数个数记为P,现在给一列与N互质的正整数,只知道一些数各出现P次,而有两个数各只出现了1次,求这两个数。

会长对Staginner说,你要是解出了这个题,这道题也加上你的名字。

Staginner要求道,很多数啊,那你得跟我说两遍。

打赌的结果大家已经看到了,那么你能不能解决这个问题呢?

Input

多组数据, 每组数据两行,第一行为两个正整数N、K,2 < N < 2^11,1 < K < 2^18

第二行K个正整数X,1 < X < 2^30,第三行重复这K个数

Output

输出只出现一次的两个数,小的在前,一个空格隔开。

Sample Input

8 6
5 5 5 5 3 7
5 5 3 5 5 7
7 14
1 1 1 1 1 1 9 6 3 3 3 3 3 3
1 1 9 1 1 1 1 6 3 3 3 3 3 3

Sample Output

3 7
6 9

HINT

#include <stdio.h>

#include <cmath>

using namespace std;

int prime[1024];

int times[1024];

int temp,num;

int len;

void init()

{

len = 0;

for(int i =0;i<1024;i++)

{

prime[i]=0;

times[i]=0;

}

}

bool exist(int n)

{

for(int i =0;i<len;i++)

{

if(prime[i]==n)

return true;

}

return false;

}

int main()

{

int N,K;

while(scanf("%d%d",&N,&K) != EOF)

{

init();

for(int i =0;i<K;i++)

{

scanf("%d",&num);

if(exist(num)==false)

{

prime[len]=num;

len++;

}

}

for(int i =0;i<K;i++)

{

scanf("%d",&temp);

for(int i =0;i<K;i++)

{

if(temp==prime[i])

{

times[i]++;

break;

}

}

}

int a[2];

int j = 0;

for(int i =0;i<len;i++)

{

if(times[i]==1)

{

a[j]=prime[i];

j++;

}

if(j==2)

break;

}

int x = a[0]<a[1]?a[0]:a[1];

int y = a[0]+a[1]-x;

printf("%d %d\n",x,y);

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: