吉首大学第十届“新星杯”大学生程序设计大赛 A题题解
这是一场很毒瘤的比赛。
鲁大师在一个星期前通知我们去打这场比赛,说名次高的有奖品,还说去年他们去参加这场比赛拿了前几名拿了个U盘…(疯狂暗示比赛很简单比赛很简单 )
单纯的我真的信了
赛后得知这场比赛是一场cf1800水平的比赛
心里一万个TMD
这次比赛前两个小时,凭借我单身18年的手速,AC了5道题,排名最高追到了20名,那时候我觉得这把有了,但没想到之后的三个小时疯狂吃T,一题都没过…比赛结束后感觉人被掏空了。
这次比赛的题我都会写题解,但因为我马上就要期末考试了,所以每天只会写一篇题解。
下面看A题:
一看此题,我第一反应是签到题,快速幂这东西肯定是被玩烂的板子,但看了几分钟后疯狂打脸,这尼玛是啥东西?
在比赛的时候我发现 n 的复杂度是有规律的,但问题求的是前 n 的和。所以就没想到可以通过打表找规律写。
学长经验一:暴力出奇迹,打表拿省一!
打表:
其实一开始我看不出有啥很清晰的规律。但把表给重新组合一下:
1
3 4
7 8 9 10
15 16 17 18 19 20 21 22
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
duang~duang
奇迹出现了!就是这么神奇!就是这么美妙!就是这么TMD
通过找规律,我们可以得出两个结论:
结论一:第i行的第一个数一定是 pow(2,i)-1。
结论二:第i行前(包括第 i 行元素)一共有 pow(2,i)-1。
所以如果要计算前 n 的和,可以利用等差数列的求和公式,然后再处理不满一行的数就可以了。
所以AC代码如下:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{ios::sync_with_stdio(false);int T;scanf("%d",&T);while(T--){int n,i;ll sum=0;scanf("%d",&n);if(n==0){cout<<0<<endl;continue;}for(i=1;pow(2,i)-1<n;i++){sum+=(ll)pow(2,i-1)*((ll)pow(2,i+1)+(ll)pow(2,i-1)-3)/2; }sum+=((ll)pow(2,i+1)-2+n-(ll)pow(2,i-1))*(n-(ll)pow(2,i-1)+1)/2; printf("%lld\n",sum);} return 0;
}
这里也要提出一个重要点:比赛的时候一定要把cin和cout换成scanf和printf。
我用这道题做了一个小测试。
即对比:
ios::sync_with_stdio(false);
cin>>n;
和
scanf("%d",&n);
他们的运行速度。一开始我认为开了ios::sync_with_stdio(false); cin流就可以和scanf一样快,但交了一发后发现会T。
通过这次比赛,我深刻的认识到一点,让我和诸佬之间有距离的不是手速,而是脑子。
所以我再这里给诸佬磕头了!
吉首大学第十届“新星杯”大学生程序设计大赛 A题题解相关推荐
- 吉首大学第十届“新星杯”大学生程序设计大赛(暨新生网络同步赛)
部分题解 前言 下午在群里面看到一个同学疯狂宣传这个比赛,处于好奇的态度(他说难度有cf1800)我参赛了,可能真的有cf1800的题目,只是我没做出来,离比赛还有十多分钟的时候到了吉首的OJ,注册了 ...
- 【题解】吉首大学第六届新星杯暨程序设计大赛(新生网络同步赛).2016
A 题目描述 C语言函数,数学函数,傻傻分不清楚~~ 题目很简单,我们定义F(x)是满足x取余a乘b的积等于0(即:x%(a*b)==0)这样的a,b的组数.现在给你一个n,你需要求出 F(n). 比 ...
- 【训练题27:单调队列实现RMQ(附带详细说明)】 H :圣诞糖果 | 吉首大学第十届“新星杯”
H :圣诞糖果 | 吉首大学第十届"新星杯" 题外话 差一题就能拿一等奖了,有点残念 当时试过了线段树/树状数组/优先队列写法,但是都没过 这题网上我没找到题解,估计也只能用单调队 ...
- 吉首大学第八届“新星杯”大学生程序设计大赛 K: WaWa的难题(找规律)
[题目] WaWa的难题 题目描述 HaHa和WaWa是好朋友,他们在临近期末的这段时间一起宅在图书馆学习. 今天HaHa在书上看到一个排列组合题目,思考很久后,仍然找不出其中的规律. 于是他把题目叙 ...
- 【反思】吉首大学第九届“新星杯”大学生程序设计大赛(暨新生网络同步赛)
昨天(12.22)打了一场吉首大学的网络赛,本来是奔着rank40的U盘去的,结果只有rank80,这样的结果肯定是有问题的,经过一夜的反思,下面总结一下错误. 1.首先是第一题,也是最不应该的,就还 ...
- 吉首大学第八届“新星杯”大学生程序设计大赛(暨新生网络同步赛)
A-组合数 #include<stdio.h> #include<string.h> #define ll long long const int N=100; const i ...
- 【简】题解 吉首大学第十一届“新星杯”大学生程序设计大赛
传送门:OJ OJ 前言 A K题的大模拟实在写不动了 摸掉了(其实是其他作业叠太多了)等有空了再说吧 写得太烂 大佬们请不要介意 问题 A 咱俩下象棋去: 给你一个象棋盘 棋子的个数可能跟普通的 ...
- 吉首大学第八届“新星杯”大学生程序设计大赛部分解题报告
问题 A: 组合数 题目描述 求组合数C(N,M),以及C(N,M)因子个数. 输入 N和M,其中0<=M<=N<=50,以EOF结束. 输出 该组合数结果 样例输入 Copy 3 ...
- 华为杯大学生计算机软件大赛,关于举办2018年西安电子科技大学程序设计网络赛暨第十六届“华为杯”大学生程序设计竞赛的通知...
各学院: 程序设计是大学生运用计算机充分展示自己分析问题和解决问题能力的一个重要途径,对于培养大学生实践能力.团队意识.创新意识.顽强意志和综合素质具有显著作用和效果.为了推动这项创新性素质教育活动的 ...
最新文章
- 架构设计的真谛:系统与子系统、模块与组件、框架与架构
- 深度学习-语义分割总结
- 计算机数控装置论文,数控专业(论文)范文.doc
- 苹果错误分析报告preferreuserinterface_数据分析的六个步骤,你做到了吗?
- 团队计划(4.27)
- linux内核 struct page结构的三种存放方式
- Tensorflow官方文档学习理解 (四)-深入MNIST
- URAL 1001 Reverse root
- Linux篇---Grep和正则匹配
- Python3安装openpyxl
- matlab的取整函数
- ArduCopter——ArduPilot——航点导航WPNav(一)
- 电商战决胜在物流 聚美优品破瓶颈发展
- MySQL之创建函数,一次性插入表中多行数据
- 【前后端对接迷惑问题】无法加载响应数据:No resource with given identifier found
- lol6月五日服务器维护,lol5月6日维护公告
- java简单通讯录的实现02person类_java实现简单控制台通讯录
- java基于ssm开发的电视剧播放视频系统页面很漂亮哦
- Python实现平方根倒数速算法
- html 输入框标签讲解,input标签详解