zoukankan      html  css  js  c++  java
  • 2019年1月20日训练日记

    对于昨天的位运算,解决了今天的一个题:
    一个奇数次:
    输入一个长度为n的数组,考虑所有不同的数字,有且只有一个数字出现了奇数次。比如对于1 2 3 1 2 3 1,我们考虑所有不同的数字1 2 3,有且只有1出现了奇数次(3次)输出这个出现了奇数次的数字。1 <= n <= 100000 1 <= a[i] <= 10^9
    (用异或运算解决,将所有输入的数据异或(可以通过对零异或保留初值)这样就得到唯一一个出现奇数次的数据了)
    但是对于两个奇数次或多个奇数次用异或我就无从下手了。。。
    于是换了另一种做法,代码如下:

    #include <cmath>
    #include <cstdio>
    #include <vector>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    long long int a[100001];
    int main()
    {
        int n;
        cin>>n;
        for(int i=1;i<=n;i++)
            cin>>a[i];
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
                if(a[i]==a[j]&&i!=j)
                {
                    a[i]=0;
                    a[j]=0;
                }
        }
        sort(a+1,a+n);
        cout<<a[n-1]<<" "<<a[n];
    	return 0;
    }
    
    

    但是对于下列测试数据得不到结论,大概是越界了,于是定义数组时换成了long long int,但是还是不能测出,其一组测试数据如下:
    10
    470151588
    233455503
    826112663
    223502930
    233455503
    271743491
    826112663
    470151588
    470131517
    271743491
    通过这组数据发现测试数据时还真是相当暴力,都这么大。这个题还要再想想才行。
    看到底是越界问题还是代码问题。

    另外还从别的csdn上看到一些有关生成随机数的概念,写的比较详细,现在写到下面:生成随机数
    (1)随机函数rand()是在头文件cstdlib中
    (2)利用求余函数rand()%b将函数rand()生成的随机数变化到[0,b-1]之间
    (3)利用rand()%b+a将随机数的取值范围平移到[a,a+b-1]之间
    例:#include
    int magic;
    magic=rand()%100+1; //生成一个1-100之间的随机数,但这种方法只能生成固定的随机数,于是我们提出了随机数种子
    例:#include<time.h>
    #include
    int magic;
    srand(time(NULL)); //为函数rand()设置随机数种子
    magic=rand()%100+1;

  • 相关阅读:
    mentohust 使用
    查找 GPU 计算能力
    在写代码过程中遇到的问题,以及当时的解决方法(如实记录)
    ubuntu14.04 解决屏幕亮度无法调节的问题
    Ubuntu14.04下安装 boost (boost_1.54 最简单的方法)
    在 Ubuntu下安装 labelImg (标数据用)
    在树莓派上配置MariaDB
    使用Telegraf + Influxdb + Grafana 监控SQLserver服务器的运行状况
    如何读懂SQL Server的事务日志
    ActiveMQ安装使用与spring整合配置教程
  • 原文地址:https://www.cnblogs.com/study-hard-forever/p/12130082.html
Copyright © 2011-2022 走看看