首页 > 代码库 > CSU 1240
CSU 1240
1240: 低调,低调。
Time Limit: 2 Sec Memory Limit: 1 MBSubmit: 146 Solved: 25
[Submit][Status][Web Board]
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 65 5 5 5 3 75 5 3 5 5 77 141 1 1 1 1 1 9 6 3 3 3 3 3 31 1 9 1 1 1 1 6 3 3 3 3 3 3
Sample Output
3 76 9
HINT
Source
CSU Monthly 2012 Feb.
大水题
看了以后以为要用euler函数
再看一遍你TM在逗我
直接判断哪个出现了一次好了
以为直接写就能过的
结果首先CE,一看好像这个单词time拿来命名会被OJ误判
然后MLE,把cout,cin改成scanf,printf好了
注意scanf用法 scanf(format,&a,...);
#include <stdio.h>#include <cmath>using namespace std;const int maxm = 1024;int prime[maxm];int times[maxm];int temp,num;int len;void init(){ len = 0; for(int i =0;i<maxm;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;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。