2019 蓝桥杯省赛 A 组模拟赛(一)-忽明忽暗
走廊里有 nn 盏灯,编号依次为 1,2,3,...,n,由学校电路控制中心管理。初始时,所有灯都是关闭的。某黑客入侵了学校电路控制中心,黑客想让灯忽明忽暗,进行了 n 轮操作。第 i 轮操作,会让所有编号为 ii 的倍数的灯状态反转,也就是打开的变为关闭,关闭的变为打开。现在黑客想知道,n 轮操作后,所有亮着的灯的编号之和为多少。因为答案很大,只需输出答案对 10^9+7 取模的结果。
输入格式
一个整数 n,表示灯的个数。
输出格式
一个整数,表示亮着的灯的编号之和对 10^9+7 取模的结果。
数据范围
对于 30% 的数据: 1≤n≤10^6。
对于 60% 的数据:1≤n≤10^14。
对于 100% 的数据:1≤n≤10^18。
样例输入
20
样例输出
30
题解:
每个灯状态改变都是因为因数,所以最后灯是亮着还是熄灭取决于因数个数的奇偶性,但是一看数据范围10^18,有点蒙,看了讲解之后,才知道因数个数是奇数的数都是完全平方数,而完全平方数的和有公式n*(n+1)*(2*n+1)/6,然后在算的时候取一下模就行了。计算的时候也有技巧,因为除法不遵循同余,还要想办法把除六算出来,方法就是将6拆成2*3,t*(t+1)必然是2的倍数,直接除2就好,在判断t*(t+1)是不是3的倍数,除以3,不是则可以说明2*t+1肯定是3的倍数,因为t和t+1都不是3的倍数,那么只能是t%3=1,(t+1)%3=2,所以2*t+1是3的倍数。
转载自:https://blog.csdn.net/Goodbye_/article/details/86742923
本来想以如下的方法,对亮着的灯直接进行统计的,但是只能过几组数据,所以借鉴了别人的博客,获得了更高效的解决办法:
#include <algorithm>
#include <cmath>
#include <iostream>
using namespace std;
bool a[1000005];
int main() {
long long n, mod = 1e9 + 7;
cin >> n;
long long ans = 0;
for (int i = 1; i <= n; i++) {
for (int j = i; j <= n; j += i) {
a[j] = !a[j];
}
}
for (int i = 1; i <= n; i++) {
if (a[i]) ans += i;
}
cout << ans % mod << endl;
cout << sqrt(5) << endl;
return 0;
}
更高效的办法:
代码:
#include<bits/stdc++.h>
using namespace std;
const long long mod=1e9+;
long long ans,n;
int main()
{
scanf("%lld",&n);
long long t=sqrt(n);
ans=t*(t+)/;
if(ans%==)
ans=(ans/)%mod*(*t+)%mod;
else
ans=(ans%mod*((*t+)/)%mod)%mod;
cout<<ans<<endl;
return ;
}
2019 蓝桥杯省赛 A 组模拟赛(一)-忽明忽暗的更多相关文章
- 52-2018 蓝桥杯省赛 B 组模拟赛(一)java
最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增.比如 212212 就是一个U型数字,但是 333333, 9898, 567567, 313133131 ...
- 2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告
2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh ...
- 记 2019蓝桥杯校内预选赛(JAVA组) 赛后总结
引言 好像博客好久没更新了 哈哈哈哈哈 趁现在有空更新一波 不知道还有没有人看 确实该记录一下每天做了什么了 不然感觉有些浑浑噩噩了 比赛介绍 全称: 蓝桥杯全国软件和信息技术专业人才大赛 蓝桥杯 实 ...
- 2015年第六届蓝桥杯C/C++B组省赛题目解析
一.奖券数目 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利.虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是5位数(10000-99999),要求其中 ...
- 2019 蓝桥杯省赛 A 组模拟赛(一)-修建公路
题目: 蒜头国有 nn 座城市,编号分别为 0,1,2,3,...,n-1.编号为 x 和 y 的两座城市之间如果要修高速公路,必须花费 x|y 个金币,其中|表示二进制按位或. 吝啬的国王想要花最少 ...
- 计蒜客 2019 蓝桥杯省赛 B 组模拟赛(三)一笔画
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> us ...
- 计蒜客 2019 蓝桥杯省赛 B 组模拟赛(三)数字拆分
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> us ...
- 计蒜客 2019 蓝桥杯省赛 B 组模拟赛(一)
D题:马的管辖 二进制枚举方案.判断该方案是否全部能被覆盖,将最优方案存下来并进行剪枝. #include<iostream> #include<cstring> #inclu ...
- 蒜厂年会|计蒜客2019蓝桥杯省赛 B 组模拟赛(一)
样例输入: 3 1 -2 1 样例输出: 2 方法一: 将环形数组拆分成为普通数组,(通过搬运复制数据到尾部),再求前缀和,找出最大前缀和.因为枚举了每一个起点,所以最大连续和也一定出现在前缀和中.. ...
随机推荐
- Mybatis插件机制以及PageHelper插件的原理
首先现在已经有很多Mybatis源码分析的文章,之所以重复造轮子,只是为了督促自己更好的理解源码. 1.先看一段PageHelper拦截器的配置,在mybatis的配置文件<configurat ...
- python之路(9)反射、包装类、动态模块导入
目录 反射 利用继承二次包装标准类 利用授权二次包装标准类 动态模块导入 反射 python提供自省的四个方法: hasattr(object,name) 判断object中有没有有个name字符串 ...
- 【转】Redis学习笔记(五)如何用Redis实现分布式锁(2)—— 集群版
原文地址:http://bridgeforyou.cn/2018/09/02/Redis-Dsitributed-Lock-2/ 单机版实现的局限性 在上一篇文章中,我们讨论了Redis分布式锁的实现 ...
- python 之金玉良言 或许是最后一次给自己系统总结--已结
jar tvf xxx.jar vim xxx.jar 配置一下 notepad++ F5 cmd /k D:"Program Files (x86)"\python\python ...
- 一秒钟带你走进P图世界-----(python)PIL库的使用
python-----PIL库的使用 一.什么是PIL库 1.PIL(Python Image Library)库是python语言的第三方库,具有强大的图像处理能力,不仅包含了丰富的像素.色彩操作功 ...
- 常用软件记录 ( Windows )
带括号注明的为主力软件 现安装的: 360驱动大师 7-Zip Acrobat Reader DC Adobe Photoshop 7.0 Anaconda babun Bandizip (解压) b ...
- vue 中的translation操作----动态值
在vue中,也会遇见translate的情况,这里顺带也可以带上如何查找页面中的元素的案例. 1.在加载过程中,有会遇见加载顺序先后的问题,然后查找页面元素null的情况,所以在mounted的钩子函 ...
- github 远程库
一.在 Github 创建 django 项目时:先在本地创建项目,然后设置为本地仓库,再与远程仓库关联 在 Git Bash 进入django项目目录,输入命令git init,此时这个目录变成Gi ...
- re模块 - 正则表达式 疏理(一)
在网上总是很难找到令自己比较满意的,关于正则表达式的文章.所以决定自己来总结一波,并配上相应的示例. 正则表达式:定义了规则,用来字符串处理. 用途: 1.匹配 - 符合规则的字符串,则认为匹配了. ...
- Week_10 C
拓扑排序 Week_10 C 题意:输入n行数据a,b ,表示a的钱数大于b的钱数,最低的人分的的钱数为888,问最少需要多少钱可以分给员工 思路:标准的拓扑排序,不过这题需要逆向拓扑 注意点 ...