Update

  • \(\texttt{2021.11.27}\) 修复了代码中的 \(10000\) 写成 \(n\) 的错误。

Content

一个家庭住在一个胡同里面,门牌号从 \(1\) 开始编号。其余门牌号的和减去这个家庭的门牌号的两倍恰好等于 \(n\),求这个家庭的门牌号和胡同的门牌号总数。

数据范围:\(n<10^5\)。

Solution

如果设胡同的门牌号总数为 \(m\),并设这个家庭的门牌号为 \(k\),则由题意可得(其中 \([i\neq k]\) 表示如果 \(i\neq k\),则这个值为 \(1\),否则为 \(0\)):

\[\sum\limits_{i=1}^mi[i\neq k]-2k=n
\]

如果我们把这个 \(\sum\limits_{i=1}^mi[i\neq k]\) 转化一下:

\[\begin{aligned}1+2+\dots+k-1+k+1+\dots+m&=1+2+\dots+m-k\\&=\sum\limits_{i=1}^mi-k\end{aligned}
\]

所以:

\[\begin{aligned}\sum\limits_{i=1}^mi-k-2k&=n\\3k&=\sum\limits_{i=1}^mi-n\\k&=\dfrac{\sum\limits_{i=1}^mi-n}{3}\end{aligned}
\]

用等差数列求和公式将 \(\sum\limits_{i=1}^mi\) 转化为 \(\dfrac{m(m+1)}2\) 可得:

\[k=\dfrac{\dfrac{m(m+1)}2-n}3
\]

因此,我们可以枚举 \(m\),然后是否满足以下两个条件:

  • \(\dfrac{m(m+1)}2>n\)。
  • \(3\mid(\dfrac{m(m+1)}2-n)\)(表示 \(3\) 能整除 \(\dfrac{m(m+1)}2-n\))。

可以发现,一旦满足了以上两个条件,\(m\) 此时的值依然很小,因此这样枚举是可以通过这道题的。

Code

#include <cstdio>
using namespace std; int main() {
int n; scanf("%d", &n);
for(int i = 1; i <= 10000; ++i) {
int ans = i * (i + 1) / 2;
if(ans > n && !((ans - n) % 3)) {printf("%d %d", (ans - n) / 3, i); return 0;}
}
return 0;
}

LuoguB2133 我家的门牌号 题解的更多相关文章

  1. NOI上看到的几个小学奥数

    :余数相同问题 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 已知三个正整数 a,b,c. 现有一个大于1的整数x,将其作为除数分别除a,b,c,得到的余数相同 ...

  2. OpenJudge解题经验交流

    1.1编程基础之输入输出01:Hello, World! 02:输出第二个整数PS:a,b需用longint类型接收 03:对齐输出 04:输出保留3位小数的浮点数 05:输出保留12位小数的浮点数 ...

  3. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  4. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  5. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  6. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  7. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  8. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  9. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

随机推荐

  1. 【NetWork】-- 网络原理

    2019-07-18  21:00:25  by冲冲 1. 网络拓扑 把网络中的计算机和通信设备抽象为一个点,把传输介质抽象为一条线,由点和线组成的几何图形就是计算机网络的拓扑结构(Network T ...

  2. SpringCloud升级之路2020.0.x版-44.避免链路信息丢失做的设计(1)

    本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 我们在这一节首先分析下 Spring Cloud Gateway 一些其他可能丢失链路信息 ...

  3. R语言与医学统计图形-【12】ggplot2几何对象之条图

    ggplot2绘图系统--几何对象之条图(包括误差条图) 1.条图 格式: geom_bar(mapping = , data = , stat = 'count', #统计变换默认计数 positi ...

  4. Atom编辑器速查

    简介 Atom 是 Github 开源的文本编辑器,相当于半个IDE.其特点如下: (1)免费开源,多平台支持(Windows.Mac.Linux): (2)界面美观.现代化,使用舒适: (3)多文件 ...

  5. ceph安装部署

    环境准备 测试环境是4台虚拟机,所有机器都是刚刚安装好系统(minimal),只配置完网卡和主机名的centos7.7,每个osd增加一块磁盘,/dev/sdb ceph-admin ---- adm ...

  6. Learning Spark中文版--第六章--Spark高级编程(1)

    Introduction(介绍) 本章介绍了之前章节没有涵盖的高级Spark编程特性.我们介绍两种类型的共享变量:用来聚合信息的累加器和能有效分配较大值的广播变量.基于对RDD现有的transform ...

  7. Leetcode中的SQL题目练习(二)

    175. Combine Two Tables https://leetcode.com/problems/combine-two-tables/description/ Description Pe ...

  8. 大数据学习day32-----spark12-----1. sparkstreaming(1.1简介,1.2 sparkstreaming入门程序(统计单词个数,updateStageByKey的用法,1.3 SparkStreaming整合Kafka,1.4 SparkStreaming获取KafkaRDD的偏移量,并将偏移量写入kafka中)

    1. Spark Streaming 1.1 简介(来源:spark官网介绍) Spark Streaming是Spark Core API的扩展,其是支持可伸缩.高吞吐量.容错的实时数据流处理.Sp ...

  9. Sharding-JDBC 实现水平分表

    1.搭建环 (1) 技术: SpringBoot2.2.1+ MyBatisPlus + Sharding-JDBC + Druid 连接池(2)创建 SpringBoot 工程

  10. [php安全]原生类的利用

    php原生类的利用 查看原生类中具有魔法函数的类 $classes = get_declared_classes(); foreach ($classes as $class) { $methods ...