低调低调
2015-06-01 23:02
162 查看
任意正整数N,不大于N且与N互质的正整数个数记为P,现在给一列与N互质的正整数,只知道一些数各出现P次,而有两个数各只出现了1次,求这两个数。
会长对Staginner说,你要是解出了这个题,这道题也加上你的名字。
Staginner要求道,很多数啊,那你得跟我说两遍。
打赌的结果大家已经看到了,那么你能不能解决这个问题呢?
第二行K个正整数X,1 < X < 2^30,第三行重复这K个数
#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;
}
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;
}
相关文章推荐
- 第二次冲刺(6)
- ajax详解
- marki-制作.9格式的素材图片
- hdu 1712 ACboy needs your help(分组背包)
- aidl ( 六) RemoteCallbackList
- 超简洁的CSS下拉菜单
- HTML辅助方法的练习一
- 1的个数
- Android Resources$NotFoundException: String resource ID #0x1
- 你好,面试官
- FOJ 1402 猪的安家 // 中国剩余定理
- LeetCode 4: Median of Two Sorted Arrays
- lxr-0.3.1 源码阅读 How To.
- Android动画之translate(位移动画)
- FOJ 1062 洗牌问题 // 找规律,模拟
- Hive 安装配置
- 大话数据结构学习记录
- [官版翻译ing]OpenStack云计算快速入门之二:OpenStack安装与配置
- 10. 获取Magento域名及图片,JS路径方法
- uboot 2011-06 之makefile 分析(二)