zoukankan      html  css  js  c++  java
  • CSU 1240

    1240: 低调,低调。

    Time Limit: 2 Sec  Memory Limit: 1 MB
    Submit: 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 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

     

    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
    ",x,y);
        }
        return 0;
    }
  • 相关阅读:
    poj----1330Nearest Common Ancestors(简单LCA)
    Tarjan--LCA算法的个人理解即模板
    hdu----(4545)魔法串(LCS)
    hdu---(1325)Is It A Tree?(并查集)
    hdu----(1599)最大子矩阵(几何/dp)
    hdu---(1054)Strategic Game(最小覆盖边)
    整理的一些模版LCS(连续和非连续)
    hdu---(4310)Hero(贪心算法)
    hdu----(4308)Saving Princess claire_(搜索)
    hdu------(4302)Holedox Eating(树状数组+二分)
  • 原文地址:https://www.cnblogs.com/Run-dream/p/3874671.html
Copyright © 2011-2022 走看看