jzoj3509-倒霉的小C【gcd,欧拉函数】

正题


大意

画n条线,每次坐标变换为(x+n,y+(−1)(i+1)∗i)(i=1∼n)(x+n,y+(-1)^{(i+1)}*i) \ \ \ (i=1\sim n)(x+n,y+(1)(i+1)i)   (i=1n)。给出n,求线穿过的格点数。


解题思路

首先我们想穿过格点的问题,我们可以无视方向,然后每次就当从(0,0)(0,0)(0,0)(n,i)(n,i)(n,i)划一条线。然后我们可以发现穿过的格点数(算上起点)就是gcd(n,i)gcd(n,i)gcd(n,i),因为每次都会穿过(n/j,i/j)(j=1∼gcd(n,i))(n/j,i/j)\ \ \ (j=1\sim gcd(n,i))(n/j,i/j)   (j=1gcd(n,i))这些点。
然后我们可以知道答案就是
1+∑i=1ngcd(n,i)1+\sum_{i=1}^n gcd(n,i)1+i=1ngcd(n,i)
但是暴力枚举会超时,我们需要想别的方法
∑i=1ngcd(n,i)=d\sum_{i=1}^n gcd(n,i)=di=1ngcd(n,i)=d
=>∑d=1nd∗∑i=1n(gcd(i,n)==d)=>\sum_{d=1}^n d*\sum ^n_{i=1}(gcd(i,n)==d)=>d=1ndi=1n(gcd(i,n)==d)
∑d=1nd∗∑i=1ngcd(i/d,n/d)=1\sum_{d=1}^n d*\sum ^n_{i=1}gcd(i/d,n/d)=1d=1ndi=1ngcd(i/d,n/d)=1
因为要求gcd(i/d,n/d)=1gcd(i/d,n/d)=1gcd(i/d,n/d)=1,所以i的个数就是φ(n/d)\varphi(n/d)φ(n/d)
所以答案就是
∑d=1nd×φ(n/d)\sum_{d=1}^n d\times \varphi(n/d)d=1nd×φ(n/d)
由于要求n/dn/dn/d是整数,所以我们可以化为
1+∑d∣nd×φ(n/d)1+\sum_{d|n} d\times \varphi(n/d)1+dnd×φ(n/d)
然后暴力枚举约数和暴力求欧拉函数值时间复杂度为O(nlogn)O(\sqrt n\ \ log\ n)O(n  log n)


代码

#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
ll n,ans=1;
ll phi(ll n)//求欧拉函数
{ll ans=n;for (ll i=2;i*i<=n;i++)if (n%i==0){ans=ans/i*(i-1);while (n%i==0) n/=i;}if (n>1) ans=ans/n*(n-1);return ans;
}
int main()
{//freopen("beats.in","r",stdin);//freopen("beats.out","w",stdout);scanf("%lld",&n);for (ll i=1;i*i<=n;i++){if (!(n%i)) {ans+=phi(n/i)*i;if (i*i!=n) ans+=n/i*phi(i);}//求约数}printf("%lld",ans);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea打war包时,JDK版本的问题解决方式

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;????雄雄的小课堂????。”????‍????前言今天&#xff0c;记录个到现在为止还没搞清的问题&#xff0c;这个问题浪费了我几个小时的时间&#xff0c;基本上昨天晚上啥也没干&#xff0…

汇编语言(五)之数组中正数和负数分离

将数组中的正数和负数分离到两个数组 程序运行&#xff1a; 代码&#xff1a; datas segmenta dw -1,2,3,4,-2,-3,5,6,7,8,9,-10,13,15,-5,-24,-36,34,53,-90count dw ($-a)/2p dw 20 dup(?)n dw 20 dup(?)pNumber dw 0…

dotnet使用Selenium执行自动化任务

如果要做百度文库&#xff0c;百度贴吧&#xff0c;百度知道签到&#xff0c;你&#xff0c;会怎么做&#xff1f;前不久我还会觉得这好像太麻烦了&#xff0c;now,soeasy。 自动化测试工具&#xff1a;Selenium Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行…

若依前后端部署之后验证码不显示

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;&#x1f449;雄雄的小课堂&#x1f448;。 最近的几天都在搞publiccms的内容&#xff0c;从0到1实现&#xff0c;在花费了大量精力下&#xff0c;终于将一个门户站完完全全的实现了&#xff0c;且还可以…

jzoj3510-最短路径【dp】

正题 大意 有n个点&#xff0c;开始只能从前面的点走到后面的点&#xff0c;到达点n后返回&#xff0c;之后就只能从后面的点走到前面的点&#xff0c;从点1出发&#xff0c;要求每个点&#xff08;除了点1&#xff09;都必须且只能经过一遍&#xff0c;并回到点1的最短路径。…

mysql助记

modify primary key auto_increment date constraint unique foreign key references cascade distinct lower upper substring order by net start\stop mysql5 net start\stop mysql8 加主键&#xff08;表级约束&#xff09; alter table student add constraint pk_stu pr…

汇编语言(六)之输出字符的前导后字符

输入一个字符&#xff0c;输出该字符的前导后字符 程序运行&#xff1a; 代码&#xff1a; datas segmenta db ?inputPrompt db input a lowercase character:$outputPrompt db 0dh,0ah,output …

若依部署上线之后验证码不显示的解决方法之一

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;????雄雄的小课堂????。”最近的几天都在搞publiccms的内容&#xff0c;从0到1实现&#xff0c;在花费了大量精力下&#xff0c;终于将一个门户站完完全全的实现了&#xff0c;且还可以自定义扩…

在 ASP.NET Core 中执行租户服务

本博文翻译自&#xff1a;http://gunnarpeipman.com/2017/08/tenant-providers/ 在我之前关于 Entity Framework core 2.0 全局查询过滤器的文章中&#xff0c;我提出了一个想法&#xff0c;当构建模型时&#xff0c;如何自动地将查询过滤器应用到所有的领域实体中&#xff0c…

jzoj3512-游戏节目【树状数组,双向dfs】

正题 大意 有n个节目&#xff0c;每个节目对3个东西贡献不同&#xff0c;要求选择至少k个让第一个东西的值最大。求方案数 解题思路 至少k个我们可以计算选择任何个数的结果减去选择k个的结果。由于k比较小&#xff0c;我们考虑直接暴搜 数据不是很大&#xff0c;我们可以将…

【最全最详细】使用publiccms实现动态可维护的首页轮播

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;&#x1f449;雄雄的小课堂&#x1f448;。 &#x1f481;‍♂️前言 前几天&#xff0c;分享了一篇关于publiccms的教程&#xff0c;在这里&#xff1a;【最全最详细】publiccms使用教程&#xff0c;不…

汇编语言(七)之字符串转大写

输入一串字符&#xff0c;将字符串的小写字母转成大写字母 程序运行&#xff1a; 代码&#xff1a; datas segmentoriginalCaseMaxLength db 0ffh,0originalCase db 100h dup(?)uppercase db 100h dup(?)inputPrompt …

基于.NET CORE微服务框架 -谈谈surging API网关

1、前言 对于最近surging更新的API 网关大家也有所关注&#xff0c;也收到了不少反馈提出是否能介绍下Api网关&#xff0c;那么我们将在此篇文章中谈谈surging Api 网关 开源地址&#xff1a;https://github.com/dotnetcore/surging 2. API网关 简介 API 网关是服务提供者…

2018/7/18-纪中某C组题【jzoj3508,jzoj3509,jzoj3510,jzoj3512】

前言 这是比赛的一天后了&#xff0c;第4题调了我超久&#xff0c;其他的都还好。还有LZHdalao给我们讲的第二题超强。 今日分数 Rankperson分数3zyc1253xjq12510蒟蒻9515hjq7515hzb7515lrz7515xxy7525lw15 正题 T1&#xff1a;jzoj3508-好元素【hash,优雅的暴力】 博客链接…

汇编语言(八)之删除数组中为零的元素

删除数组中为零的元素 程序运行&#xff1a; 无输出 代码&#xff1a; datas segmentmem dw 10 dup(0h,34h,0h,56h,32h,10h,3h,13h,0h,0h)memCount dw ($-mem)/2datas endsstacks segment stackdb 100h dup(?)stacks endscodes segmentassume …

【最全最详细】使用publiccms实现动态可维护的导航菜单栏

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;????**雄雄的小课堂????。”????‍????前言昨天&#xff0c;给大家整理的是通过publiccms实现动态可维护的轮播图&#xff0c;有需要的小伙伴可以点击这里&#xff1a;publiccms实现动…

golang学习笔记

Panic异常 1、使用defer recover处理 2、或者程序启动时就让他出错 &#xff08;初始化全局变量和 init&#xff09;&#xff08;军哥亲授&#xff09; Json Age int json:"age,omitempty" 序列化时忽略0值或空值type People struct {Name string json:"…

【上海】关于云计算,你想学习哪些知识,快让我来满足你

超高人气、干货十足的 免费云计算课堂 Microsoft Cloud Day云思塾 2017下半年再出发&#xff01; 即将开启上海之旅&#xff0c;微软诚邀您参加&#xff01; Microsoft Cloud Day是个啥&#xff1f; 这是为时一天的结合用户培训与经验分享的云计算免费研讨会&#xff0c;通…

jzoj3461-小麦亩产一千八【斐波那契数列】

正题 大意 第零个格1个&#xff0c;第一格有p个&#xff0c;之后第i格就是第i-1格加i-2格。知道第a格有x个&#xff0c;求第b格有多少个。 解题思路 我们推一下 12345678ppp+1" role="presentation">p+1p+12p12p13p23p25p35p38p58p513p813p821p1321p13不难…

【最全最详细】publiccms实现将公共部分提取成单独模块引入

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;&#x1f449;雄雄的小课堂&#x1f448;。 &#x1f9d8;‍♂️往期系列 这两天一直在整理Publiccms系列的教程&#xff0c;有需要的小伙伴们可以点击以下链接查看&#xff1a; ☝publiccms使用教程&a…