boj472. 学姐点名-巧解

博客介绍了BOJ472编程题的背景,学姐在讲座中发现缺少一个学弟并要求通过点名找出。文章探讨了解决方案,提出两种方法:一是通过数学公式计算未点到的学号,二是利用异或操作。内容针对编程竞赛中的效率要求,指出代码大小和运行时间限制,并提供了样例输入和输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

时间限制 1000 ms 内存限制 10000 KB

题目描述

学姐辛辛苦苦准备了一次讲座,讲课的过程中学姐数了一下人数,发现居然少到了一个学弟,学姐很生气,下决心要把这个学弟找出来。学姐开始点名了,为了快一点签到,学姐点名的时候只点大家的学号。学姐说:“这么简单的统计,几行就可以搞定,帮我写个程序吧,超过500B的运行时间又在1ms以上的我不要”。

oj的功能出了点问题,内存判定没有效果,代码长度限制也没有效果。oj上显示超过528B的代码,比赛结束前时限直接调成1ms手工重新判定。(换句话说,本地代码大小超过500B的AC不算。)

输入格式

每组数据第一行一个数N,接下来N-1行每行一个数字表示学弟的学号。

多组数据,eof结束。

2组数据N为1000000

500组数据满足N不大于3000

1000组数据满足N不大于10

 

输出格式

输出没到的学弟的学号

输入样例

3
1 
3
2
1

输出样例

2
2

  既然学号排列那么优美,两个方法:

A.直接用n*(n+1)/2-点名的和;B.异或

#include 
#include 
///Version 1
int main()
{
    int n,num,i,k_;
    long long int k;
    while(scanf("%d",&n)!=EOF){
        k=(long long int)n*(n+1)/2;
        for(i=0;i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值