luoguU42591

题意:

n个不超过n的正整数中,其中有一个数出现了两次,其余的数都只出现了一次, 求这个出现两次的数。

思路:

这个题的亮点在于内存限制1MB。明显不能再用数组储存了,肯定是用一些运算来求出那个数。假设出现两次的数为x,没有出现的数为y。一开始很容易想到计算出1到n加起来应该得到的值,然后再将给出的数加起来。但是这样只能得到x-y的值。然后在这个基础上可以想到,用x-y不能推出这两个数是因为可能有很多数的差值与他们相同。但是如果用\(x^2-y^2\)所得到的差值重复的概率就会小很多。然后我再用这个差值依次去尝试每个y,看得到的x是不是一个完全平方数,如果是的话我们就假设所得到的x就是正确的。然而这样还是不保险怎们办。那就再用一开始的方法,再去判断,也就是现在我们已经知道这两个数是多少了,然后用实际的n个数的和加上他们的差值,看能否得到应得的值。

本来以为自己只是把这道题水过去了。后来仔细一想才发现,这也是有依据的,不是概率算法,而是正确解法。以下给出证明

重新考虑该题思路,其实本质上就是我用\(x^2-y^2\)的值和\(x-y\)的值推出了x与y的值。显然这是有唯一解的。假设存在一个$$c2-d2=x2-y2且c-d=x-y$$而又有$$c2-d2=(c-d)(c+d)$$$$x2-y2=(x-y)(x+y)$$就有$$(c-d)(c+d)=(x-y)(x+y)$$$$设k=c-d=x-y$$就有$$k+2d=k+2y$$$$所以d=y$$,然后就很容易得到c=x。所以x与y是唯一的。

代码:

#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cmath>
#include<ctime>
#include<bitset>
using namespace std;
typedef long long ll;
ll read() {
ll x=0,f=1;char c=getchar();
while(c<'0'||c>'9') {
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9') {
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
ll x;
ll x2;
ll sum,sum_;
int check(int x,int y) {
return sum_-x+y==sum;
}
int main() {
int n=read();
for(ll i=1;i<=n;++i) {
x+=i*i;
sum+=i;
}
for(int i=1;i<=n;++i) {
ll k=read();
sum_+=k;
x2+=k*k;
}
ll z=x-x2;
for(ll i=1;i<=n;++i) {
ll zz=i*i;
if(zz+z<=0) continue;
ll kk=sqrt(zz+z);
if(kk*kk==zz+z) {
if(!check(i,kk)) continue;
cout<<i;
return 0;
}
}
return 0;
}

[luoguU42591][小T的面试题]的更多相关文章

  1. python 饥饿的小易(网易笔试题)

    本周早些时候,学弟给我发了一道网易的笔试题,饥饿的小易,感觉有点意思-分享给大家 题目描述: 小易总是感觉饥饿,所以作为章鱼的小易经常出去寻找贝壳吃.最开始小易在一个初始位置x_0.对于小易所处的当前 ...

  2. [luoguU42591][小T的绝对值]

    luoguU42592 20分思路 对给出的序列求出前缀和,然后\(n^2\)暴力枚举即可拿到第一档分 40分思路 对于数列中的数都相同的情况.只需要特判即可.只要特别注意全都是0的情况即可. 100 ...

  3. 微信小程序之在线试题(1)

    最近在做一套公司的市场化培训项目,涉及到手机端在线答题的设计,首先摒弃app的模式,那就只剩下微信公众号和小程序,而公众号是可以关联小程序,所以我们只需要做好一套小程序. 因为篇幅问题,下面只讲解在线 ...

  4. vue教学视频(小程序教学视频)

    写在前面 最近通过了解众多面试者的面试情况 总结出以下几点: 对框架的要求越来越高特别是vue和小程序 不会vue和小程序连面试机会都没有 会vue的比不会vue的薪资高4-5k 小程序有发展的趋势 ...

  5. Java面试题(全)--视频系列

    此系列为面试笔试题的视频讲解,以下均为超链接,点击即可进入每个知识点的讲解. Java面试题01.面试的整体流程 Java面试题02.java的垮平台原理 Java面试题03.搭建一个java的开发环 ...

  6. [LOJ#2324]「清华集训 2017」小Y和二叉树

    [LOJ#2324]「清华集训 2017」小Y和二叉树 试题描述 小Y是一个心灵手巧的OIer,她有许多二叉树模型. 小Y的二叉树模型中,每个结点都具有一个编号,小Y把她最喜欢的一个二叉树模型挂在了墙 ...

  7. [LOJ#2323]「清华集训 2017」小Y和地铁

    [LOJ#2323]「清华集训 2017」小Y和地铁 试题描述 小Y是一个爱好旅行的OIer.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的 ...

  8. 从0开始,手把手教你开发并部署上线一个知识测验微信小程序

    上线项目演示 微信搜索[放马来答]或扫以下二维码体验: 项目源码 项目源码 其他版本 Vue答题App实战教程 Hello小程序 1.注册微信小程序 点击立即注册,选择微信小程序,按照要求填写信息 2 ...

  9. 月薪20k的java面试题他来了

    1.场景描述 最近有朋友私信,说网上的面试资料有点散,还有些过时的,问老王能否帮忙整理下,老王晚上刚好有空,就给梳理了下,分享给大家. 2.解决方案 2.1 说明 (1)面试的题目多数是从网上找的,老 ...

随机推荐

  1. Centos7下ELK+Redis日志分析平台的集群环境部署记录

    之前的文档介绍了ELK架构的基础知识,日志集中分析系统的实施方案:- ELK+Redis- ELK+Filebeat - ELK+Filebeat+Redis- ELK+Filebeat+Kafka+ ...

  2. 【BUAA软件工程】第一次阅读作业

    BUAA软件工程 第一次阅读作业 项目 内容 这个作业属于哪个课程? 北航软工 这个作业的要求在哪里? 第一次个人作业 我在这个课程的目标是? 学习高效严谨的软件工程开发过程,建立团队意识 这个作业在 ...

  3. springboot整合fastJson遇到重定向问题

    通过网上教程使用springboot整合fastJson后遇到页面重定向问题(使用的springboot版本是2.0.2.RELEASE ,其他的版本可能不会出现以下问题),如下图: 我的项目结构如下 ...

  4. 我的github地址 https://github.com/1010de/Test.git

    构建之法老师叫交下任务学习github,经过一段时间的学习和了解,看介绍.看视频.看博客.初步认识到github的方便与好处.     自己试着去注册和使用github,已经慢慢学会了一些基本操作. ...

  5. 最新一课 老师指点用Listview适配器

    上课前 <?xml version="1.0" encoding="utf-8"?>    <ScrollView xmlns:android ...

  6. 关于RESTful 的概念

    1.REST 是面向资源的,这个概念非常重要,而资源是通过 URI 进行暴露.URI 的设计只要负责把资源通过合理方式暴露出来就可以了.对资源的操作与它无关,操作是通过 HTTP动词来体现,所以RES ...

  7. jupyter notebook远程配置

    服务器端配置 在服务器生成jupyter配置文件 $jupyter notebook --generate-config 生成之后会得到配置文件的路径 启动jupyter,设置密码 In [1]: f ...

  8. PAT 1006 换个格式输出整数

    https://pintia.cn/problem-sets/994805260223102976/problems/994805318855278592 让我们用字母B来表示“百”.字母S表示“十” ...

  9. NODE中解决跨域请求的问题

    1.Node Express 解决请求跨域请求 标签(空格分隔): 跨域 1是Access-Control-Allow-Origin 允许的域 2是Access-Control-Allow-Heade ...

  10. 转《trackingjs+websocket+百度人脸识别API,实现人脸签到》流程

    先用websocket与后台建立通讯:用trackingjs在页面调用电脑摄像头,监听人脸,发现有人脸进入屏幕了,就把图片转成base64字符串,通过websocket发送到后端:后端拿到图片,调用百 ...