走廊里有 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+7;
long long ans,n;
int main()
{scanf("%lld",&n);long long t=sqrt(n);ans=t*(t+1)/2;if(ans%3==0)ans=(ans/3)%mod*(2*t+1)%mod;elseans=(ans%mod*((2*t+1)/3)%mod)%mod;cout<<ans<<endl; return 0;
}

转载于:https://www.cnblogs.com/LJHAHA/p/10624169.html

2019 蓝桥杯省赛 A 组模拟赛(一)-忽明忽暗相关推荐

  1. 2019 蓝桥杯省赛 B 组模拟赛(一)蒜厂年会

    2019 蓝桥杯省赛 B 组模拟赛(一)蒜厂年会 这题有两种情况 1.最大的和是在0~n-1 2.最大的和越过了首尾 这时候只要用n个数的和 - 0~n-1 的连续的最小和 这是求连续子集最大.最小 ...

  2. 2019 蓝桥杯省赛 B 组模拟赛(一)——计蒜客(未完待续)

    比赛链接: 2019 蓝桥杯省赛 B 组模拟赛(一) 友情提示: 蓝桥杯的头文件,如果不是都记得,可以直接万能头文件 #include <bits/stdc++.h>, 不过有的时候,这样 ...

  3. 2018 蓝桥杯省赛 B 组模拟赛(一)--封印之门

    题目链接:https://nanti.jisuanke.com/t/A1594 蒜头君被暗黑军团包围在一座岛上,所有通往近卫军团的路都有暗黑军团把手.幸运的是,小岛上有一扇上古之神打造的封印之门,可以 ...

  4. 52-2018 蓝桥杯省赛 B 组模拟赛(一)java

    最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增.比如 212212 就是一个U型数字,但是 333333, 9898, 567567, 313133131 ...

  5. 2020年 第11届 蓝桥杯 C/C++ B组 省赛真题详解及小结【第1场省赛2020.7.5】【Java版】

    蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 注意:部分代码及程序 源自 蓝桥杯 官网视频(历年真题解析) 郑未老师. 2013年 第04届 蓝桥杯 ...

  6. 第一届『Citric杯』NOIP提高组模拟赛 题解

    [官方题解]第一届『Citric杯』NOIP提高组模拟赛 题解 第一题 柠檬超市 这题是本次模拟赛的送分题.做法显然. 但是注意此题有一个陷阱: 注意W和C的规模都是10^9,所以如果直接用doubl ...

  7. python解答蓝桥杯真题3 省模拟赛 计算机存储中有多少字节

    python解答蓝桥杯真题3 省模拟赛 计算机存储中有多少字节 题目 问题描述 在计算机存储中,12.5MB是多少字节? 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整 ...

  8. 2015年第六届蓝桥杯C/C++B组省赛题目解析

    1.奖券数目 有些人很迷信数字,比如带"4"的数字,认为和"死"谐音,就觉得不吉利. 虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是 ...

  9. 计蒜客2019蓝桥杯省赛B组模拟赛(一)题目及解析

    蓝桥杯历年真题题目及题解目录汇总   A. 结果填空:钟表 题库链接 分值: 5 一天蒜头君 22:28:45 开始睡觉,06:24:26 醒来之后,蒜头君在想,今天我睡了多久? 请你告诉蒜头君睡了& ...

  10. 2019年第十届蓝桥杯C/C++ A组国赛赛后总结(北京旅游总结)

    听说蓝桥杯挺水,几个同学一块儿报了省赛准备打着玩玩(Java C/C++ A B组都有).我报的是C/C++A组. 好,省赛一结束,一等奖前排...但是只有两个同C/C++A组的同学也是省一,不过都是 ...

最新文章

  1. websocket并发性测试
  2. Adapterview和adapter的联系
  3. python退出程序-Python退出命令的总结
  4. 自己动手实现一个简单的JSON解析器
  5. html5 字符相等,js里返回字符ok与字符ok比较不相等的问题
  6. SpringBoot实战教程(8)| 整合mybatis-plus
  7. 参数调优为什么要采样_优化参数
  8. Python 3.8 新功能大揭秘
  9. 如何创建ChromeApp
  10. [leetcode]5178. 四因数
  11. psql 命令行使用
  12. android系统签名及修改
  13. mysql pxc介绍_MySQL高可用之PXC简介
  14. Android仿人人客户端(v5.7.1)——个人主页(三)
  15. 【操作系统安全】_Win7Win8系列提权漏洞
  16. python中栈是先进后出_python中的栈 LIFO类似于堆即先进后出
  17. down mark 打钩_Markdown 基本语法
  18. pdf翻译,两款pdf文件翻译软件,支持linux/ubuntu,window,mac下使用
  19. ios与android指纹识别,iOS开发实现TouchID指纹解锁
  20. Android事件分发机制在实战开发中的应用之二

热门文章

  1. 为什么除了Go语言, 其他类C语言都是垃圾[翻译][转]
  2. 微信朋友圈广告:精准投放还是“绑架”营销
  3. (DT系列一)DTS结构及其编译方法
  4. 专门为中小软件提供的开源JAVA网络验证系统
  5. MySQL学习笔记(基础篇未完待补充)
  6. android设备登录是什么手机_手机玩游戏屏幕太小,教你怎么一分钟把手机游戏画面投到大屏幕上...
  7. 【ubuntu调节屏幕亮度】
  8. 鸿蒙手机壁纸有条纹,百变图标(鸿蒙)
  9. Linux中最全shell命令常用注意事项
  10. 计算机网络 --- IP